Дистанционное обучение

Уфимский государственный авиационный технический университет

Уфимский государственный авиационный технический университет

Разработка приложений в среде Borland Delphi

лабораторный практикум по дисциплине "Информатика"

Начать работу

© Карчевская М.П., Рамбургер О.Л., Тархов С.В.. Хамзина Е.А.

© Кафедра информатики 2005 г.


About.htm

Цель и содержание практикума

назад

Данный лабораторный практикум предназначен для изучения Delphi – интегрированной среды разработки приложений, ориентированных на работу в Windows.

В практикуме изложены концепции объектно-ориентированного программирования, приведен материал по языку программирования Object Pascal, описана интегрированная среда разработки приложений Delphi и приемы работы с проектами, сделан упор на работу с базовыми структурами, массивами данных, строками, файлами, а также на программирование графики.

Практикум содержит цикл лабораторных работ:

Лабораторная работа №1. Изучение среды Delphi и работы в ней. Программирование линейных алгоритмов

Лабораторная работа №2. Структурные операторы. Программирование алгоритмов разветвляющейся структуры

Лабораторная работа №3. Структурные операторы. Программирование алгоритмов циклической структуры.

Лабораторная работа №4. Работа с одномерными массивами

Лабораторная работа №5. Работа с двухмерными массивами.

Лабораторная работа №6. Работа со строками

Лабораторная работа №7. Работа с файлами

В начале каждой лабораторной работы изложен теоретический материал и приведены практические примеры, знакомство с которыми поможет выполнить задания,.

Контрольные вопросы и задания в конце лабораторной работы помогут закрепить изученный материал.

Задания к лабораторным работам приведены по вариантам в нескольких вариантах сложности.

Выполнение заданий по разработке приложений поможет сформировать прочные навыки программирования.

Требования к выполнению лабораторных работ

  1. В порядке, описанном в методических указаниях, изучить тему лабораторной работы.
  2. Выполнить задания, приведенные в методических указаниях.
  3. Сохранить результаты работы на личной дискете.
  4. Показать результаты работы преподавателю и защитить их.
  5. Хранить файлы проектов результатов работы на личной дискете до завершения семестра.
  6. Составить отчет, содержащий:

· название, цель и задачи лабораторной работы;

· ответы на контрольные вопросы и задания;

· заключения и выводы.

Список литературы

  1. Культин Н.Б. Программирование в Turbo Pascal 7.0 Delphi. – 2-е изд., перераб. и доп. – СПб.: БХВ-Петербург. 2001. – 416 с.
  2. Попов В. Паскаль и Дельфи. Самоучитель. – СПб.: Питер, 2003. – 544 с.
  3. Баженов И.Ю. Delphi 6. Самоучитель программиста. – М.:КУДИЦ-ОБРАЗ, 2002. – 432 с.
  4. Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Том 1. – М.: Бином. Лаборатория знаний, 2002. – 304 с.
  5. Стивенс Р. Delphi. Готовые алгоритмы / Род Стивенс ; Пер. с англ. Мерещука П.А. – 2-е изд., стер. – М. : ДМК Пресс; СПб.: Питер, 2004. – 384 с.
  6. Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Том 2. – М.: Бином. Лаборатория знаний, 2002. – с.
  7. Юркин А. Задачник по программированию. – СПб.: Питер, 2002. – 192 с.

назад


Тархов Сергей Владимирович

Хамзина Елена Александровна

старший преподаватель

Кафедра информатики
Уфимского государственного авиационного технического университета.

т. (3472) 23-78-76

[На главную страницу]


Home Page

Лабораторный практикум

по дисциплине: "Информатика"

Основы программирования в интегрированной среде разработки приложений Borland Delphi 6

Начало работы

Система визуального объективно-ориентированного проектирования Delphi позволяет:

- создавать законченные приложения для Windows самой различной направленности, от чисто вычислительных и логических, до использующих графику и мультимедиа;

- быстро создавать профессионально выглядящий оконный интерфейс для любых приложений, написанных на любом языке; интерфейс удовлетворяет всем требованиям Windows и автоматически настраивается на ту систему, которая установлена на компьютере пользователя, поскольку использует функции, процедуры и библиотеки Windows;

- создавать свои динамически присоединяемые библиотеки (Dll) компонентов, форм, функций, которые затем можно использовать из других языков программирования;

- создавать мощные системы работы с локальными и удаленными базами данных любых типов;

- формировать и печатать сложные отчеты, включающие таблицы, графики и т.п.;

- создавать справочные системы (файлы.hlp), как для своих приложений, так и для любых других, с которыми можно работать не только из приложений, но и просто из Windows;

- создавать профессиональные программы установки для приложений Windows, учитывающие всю специфику и все требования операционной системы.


Тархов Сергей Владимирович

Карчевская Маргарита Петровна

доцент

Кафедра информатики
Уфимского государственного авиационного технического университета.

т. (3472) 23-78-76

[На главную страницу]


Тархов Сергей Владимирович

Рамбургер Ольга Леонардовна

старший преподаватель.

Кафедра информатики
Уфимского государственного авиационного технического университета.

т. (3472) 23-78-76

[На главную страницу]


Тархов Сергей Владимирович

докторант, кандидат технических наук, доцент.

Кафедра информатики
Уфимского государственного авиационного технического университета.

т. (3472) 23-78-76
E-mail: tarkhov@mail.rb.ru

С 1990 г. преподает дисциплины "Информатика", "Компьютерные технологии", Электронный офис", "Системы подготовки деловой документации", "Организация интерфейса в человеко-машинных системах" и др.

Один из авторов новой инструментально обеспеченной методики преподавания дисциплины “Информатика” и других дисциплин компьютерного профиля для подготовки бакалавров и магистров, внедренной в учебный процесс в ряде вузов региона.

В 1998 году им получен и успешно выполнен грант "Института Открытое общество" (фонд Сороса) "Музей истории отечественных компьютеров", опубликованный http://www.bashedu.ru/konkurs/tarhov/index.htm и размещенный на CD Московского Центра интернет-образования в разделе "Ресурсы Интернета".

Тархов С.В. является автором более 120 научных и методических работ.

Область научный интересов: проектирование информационно-обучающих сред для образовательных систем.

[На главную страницу]


index.htm

Лабораторная работа №1: Изучение среды Delphi и работы в ней. Программирование линейных алгоритмов

начало

назад

вперед

конец

вопросы

задания

Темы:

Основные понятия объектно-ориентированного программирования

Общая организация программы в Delphi

Структура проекта в Delphi

Общее описание среды Delphi

Создание, сохранение, компиляция и отладка простого приложения

Ошибки выполнения приложения

Программирование алгоритмов линейной структуры

Задания первого уровня

Задания второго уровня

Задания третьего уровня

Контрольные вопросы и задания

начало

назад

вперед

конец

вопросы

задания


question

Лабораторная работ а №1: Контрольные вопросы и задания

начало

вперед

конец

вопросы

задания

1. В чем заключается основное отличие процедурного и объектно-ориентированного программирования?

2. Назовите основные принципы объектно-ориентированного программирования

3. Что такое объект?

4. Что такое класс?

5. В чем заключается наследование?

6. Что такое инкапсуляция и для чего она применяется?

7. В чем заключается полиморфизм операций?

8. Что такое метод?

9. Что такое свойство объекта, каким образом его можно изменять?

10. Что такое события? Каково назначение обработчика событий?

11. Каково назначение сообщений?

12. В чем заключается преимущества визуального программирования интерфейса?

13. Опишите структуру и назначение отдельных элементов головной программы приложения Delphi.

14. Каково назначение модуля в проекте приложения Delphi? Опишите назначение отдельных разделов модуля.

15. Как различается доступность объектов, описанных в разделах interface и implementation?

16. Как указать ссылку на свойства и методы объекта в тексте программы?

17. Какие компоненты входят в интегрированную среду разработки приложений Delphi?

18. Перечислите основные компоненты окна среды Delphi и укажите их назначение.

19. Как получить подсказку Delphi по элементам окна и компонентам проектируемого графического интерфейса?

20. Каково назначение страниц Properties и Events в окне Object Inspector?

21. Как разместить компонент на форме?

22. Какими способами можно изменять свойства компонента? Приведите примеры.

23. Перечислите состав проекта Delphi. Опишите назначение различных файлов.

24. Каково назначение обработчиков событий? Каким образом можно инициировать создание процедуры-обработчика событий?

25. Опишите порядок получения справки по синтаксису языка Object Pascal в ИСР Delphi.

26. Изучите и опишите информацию о компонентах палитры Standard по справке Delphi.

27. Изучите и опишите информацию о числовых типах данных языка Object Pascal по справке Delphi.

28. Изучите и опишите информацию об арифметических операциях языка Object Pascal по справке Delphi.

29. Изучите и опишите информацию о функции Random языка Object Pascal по справке Delphi.

30. Что хранится в файле проекта с расширением .Dfm.

31. Что хранится в файле проекта с расширением .Pas.

32. Что хранится в файле проекта с расширением .Dpr.

33. Что хранится в файле проекта с расширением .Res.


tasks

Лабораторная работа №1: Индивидуальные задания

вперед

конец

вопросы

задания

Задания к лабораторной работе №1 первого уровня

Создать приложение, вычисляющее значения переменных по заданным расчетным формулам и наборам исходных данных. На экран вывести значения вводимых исходных данных и результаты вычислений, сопровождая ввод и вывод поясняющими комментариями.

Вариант задания | Расчетные формулы | Значения исходных данных
1. |  |
2. |  |
3. |  |
4. |  |
5. |  |
6. |  |
7. |  |
8. |  |
9. |  |
10. |  |
11. |  |
12. |  |
13. |  |
14. |  |
15. |  |

Задания к лабораторной работе №1 второго уровня

Создать приложение для решения задачи.

Вариант задания

Формулировка задачи

Вычислить площадь и периметр прямоугольника, если задана длина одной стороны (a) и коэффициент n (%), позволяющий вычислить длину второй стороны (b=n*a).

Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.

Вычислить периметр и площадь прямоугольного треугольника по заданным длинам двух катетов a и b.

Вычислить площади геометрических фигур: прямоугольника и треугольника по заданным сторонам.

По известному радиусу вычислить объем и площадь поверхности шара.

Даны два числа. Найти среднее арифметическое кубов этих чисел и среднее геометрическое модулей этих чисел.

Даны два числа. Вычислить их сумму, разность, произведение и частное.

Известен объем информации в байтах. Выразить его в мегабайтах и гигабайтах.

Длина выражена в сантиметрах. Выразить ее в дюймах. (1 дюйм=2.5 см)

Перевести значение веса, выраженное в граммах, в унции (1 унция =28.3 г)

Три сопротивления соединены последовательно. Найти сопротивление соединения.

Вычислить путь, пройденный лодкой по течению, если известна ее скорость в стоячей воде, скорость течения реки и время движения.

Вычислить расстояние между двумя точками с заданными координатами.

Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.

Известны внутренний и внешний диаметры кольца. Найти его площадь.

Задания к лабораторной работе №1 второго уровня

Создать приложение для решения задачи.

Вариант задания

Формулировка задачи

Вычислить объем призмы, боковые грани которой квадраты, а основанием служит равносторонний треугольник, вписанный в круг радиуса R.

Треугольник задан тремя сторонами. Вычислить его медианы.

В шар радиуса R вписан конус с углом a при вершине в осевом сечении конуса. Определить объем и полную поверхность конуса.

Вычислить диагональ и площадь прямоугольника, вписанного в окружность радиуса R, если отношение его сторон равно n.

Даны две стороны треугольника и угол между ними. Определить третью сторону, площадь треугольника и радиус описанной окружности.

Определить плату за квартиру, если известно: площадь квартиры, количество проживающих, плата за содержание жилья, отопление, водопровод, канализацию, подогрев воды, коллективную антенну, лифт, вывоз мусора.

Определить плату за электроэнергию, если известны: старое и новое показания счетчика, стоимость одного квт/часа электроэнергии, количество просроченных дней и размер пени за один день просрочки.

V1 литров воды нагревается на электроплите от температуры t0 до температуры t1, а V2 литров – до температуры t2. Сколько будет стоить затраченная на это электроэнергия? КПД электроплитки и стоимость 1 квт час электроэнергии известны (удельная теплоемкость воды С=4190 Дж/кгК).

Пусть смешано V1 литров воды температуры t1 с V2 литрами воды температуры t2 и V3 литрами воды температуры t3 . Вычислить объем и температуру образовавшейся смеси.

Торговая фирма закупила n количество меховых изделий по цене C1 для продажи. Фирма облагается налогами: 20% налог от прибыли в местный бюджет, 28% налог в пенсионный фонд, 5% от объема продажи идет на формирование зарплаты. Определить розничную цену товара, если планируемая прибыль предприятия 15%.

Длина отрезка задана в дюймах (1 дюйм = 2.54 см). Перевести значение длины в метрическую систему, то есть выразить ее в метрах, сантиметрах и миллиметрах. Например, 21 дюйм = 0 м 53 см 3,4 мм.

Заданы моменты начала и конца некоторого промежутка времени в часах, минутах и секундах (в пределах одних суток). Найти продолжительность этого промежутка в тех же единицах.

Текущее время (часы, минуты, секунды) задано тремя переменными: h, m s. Округлить его до целых значений минут и часов. Например, 14 ч 21 мин 45 с преобразуется в 14 ч 22 мин или 14 ч, а 9 ч 59 мин 23 с – соответственно в 9 ч 59 мин или 10 ч.

Угол a задан в радианах. Найти его величину в градусах, минутах и секундах.

Длина некоторого отрезка составляет p метров. Перевести ее в русскую не метрическую систему.
1 верста = 500 саженей;
1 сажень = 3 аршина;
1 аршин = 16 вершков;
1 вершок = 44,45 мм.


tasks_1

Лабораторная работ а №1: Задания к лабораторной работе №1 первого уровня

начало

назад

вперед

конец

вопросы

задания

Создать приложение, вычисляющее значения переменных по заданным расчетным формулам и наборам исходных данных. На экран вывести значения вводимых исходных данных и результаты вычислений, сопровождая ввод и вывод поясняющими комментариями.

Вариант задания | Расчетные формулы | Значения исходных данных
1. |  |
2. |  |
3. |  |
4. |  |
5. |  |
6. |  |
7. |  |
8. |  |
9. |  |
10. |  |
11. |  |
12. |  |
13. |  |
14. |  |
15. |  |


tasks_2

Лабораторная работ а №1: Задания к лабораторной работе №1 второго уровня

начало

назад

вперед

конец

вопросы

задания

Создать приложение для решения задачи.

Вариант задания

Формулировка задачи

Вычислить площадь и периметр прямоугольника, если задана длина одной стороны (a) и коэффициент n (%), позволяющий вычислить длину второй стороны (b=n*a).

Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.

Вычислить периметр и площадь прямоугольного треугольника по заданным длинам двух катетов a и b.

Вычислить площади геометрических фигур: прямоугольника и треугольника по заданным сторонам.

По известному радиусу вычислить объем и площадь поверхности шара.

Даны два числа. Найти среднее арифметическое кубов этих чисел и среднее геометрическое модулей этих чисел.

Даны два числа. Вычислить их сумму, разность, произведение и частное.

Известен объем информации в байтах. Выразить его в мегабайтах и гигабайтах.

Длина выражена в сантиметрах. Выразить ее в дюймах. (1 дюйм=2.5 см)

Перевести значение веса, выраженное в граммах, в унции (1 унция =28.3 г)

Три сопротивления соединены последовательно. Найти сопротивление соединения.

Вычислить путь, пройденный лодкой по течению, если известна ее скорость в стоячей воде, скорость течения реки и время движения.

Вычислить расстояние между двумя точками с заданными координатами.

Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.

Известны внутренний и внешний диаметры кольца. Найти его площадь.


tasks_3

Лабораторная работ а №1: Задания к лабораторной работе №1 третьего уровня

начало

назад

вперед

конец

вопросы

задания

Создать приложение для решения задачи.

Вариант задания

Формулировка задачи

Вычислить объем призмы, боковые грани которой квадраты, а основанием служит равносторонний треугольник, вписанный в круг радиуса R.

Треугольник задан тремя сторонами. Вычислить его медианы.

В шар радиуса R вписан конус с углом a при вершине в осевом сечении конуса. Определить объем и полную поверхность конуса.

Вычислить диагональ и площадь прямоугольника, вписанного в окружность радиуса R, если отношение его сторон равно n.

Даны две стороны треугольника и угол между ними. Определить третью сторону, площадь треугольника и радиус описанной окружности.

Определить плату за квартиру, если известно: площадь квартиры, количество проживающих, плата за содержание жилья, отопление, водопровод, канализацию, подогрев воды, коллективную антенну, лифт, вывоз мусора.

Определить плату за электроэнергию, если известны: старое и новое показания счетчика, стоимость одного квт/часа электроэнергии, количество просроченных дней и размер пени за один день просрочки.

V1 литров воды нагревается на электроплите от температуры t0 до температуры t1, а V2 литров – до температуры t2. Сколько будет стоить затраченная на это электроэнергия? КПД электроплитки и стоимость 1 квт час электроэнергии известны (удельная теплоемкость воды С=4190 Дж/кгК).

Пусть смешано V1 литров воды температуры t1 с V2 литрами воды температуры t2 и V3 литрами воды температуры t3 . Вычислить объем и температуру образовавшейся смеси.

Торговая фирма закупила n количество меховых изделий по цене C1 для продажи. Фирма облагается налогами: 20% налог от прибыли в местный бюджет, 28% налог в пенсионный фонд, 5% от объема продажи идет на формирование зарплаты. Определить розничную цену товара, если планируемая прибыль предприятия 15%.

Длина отрезка задана в дюймах (1 дюйм = 2.54 см). Перевести значение длины в метрическую систему, то есть выразить ее в метрах, сантиметрах и миллиметрах. Например, 21 дюйм = 0 м 53 см 3,4 мм.

Заданы моменты начала и конца некоторого промежутка времени в часах, минутах и секундах (в пределах одних суток). Найти продолжительность этого промежутка в тех же единицах.

Текущее время (часы, минуты, секунды) задано тремя переменными: h, m s. Округлить его до целых значений минут и часов. Например, 14 ч 21 мин 45 с преобразуется в 14 ч 22 мин или 14 ч, а 9 ч 59 мин 23 с – соответственно в 9 ч 59 мин или 10 ч.

Угол a задан в радианах. Найти его величину в градусах, минутах и секундах.

Длина некоторого отрезка составляет p метров. Перевести ее в русскую не метрическую систему.

1 верста = 500 саженей;
1 сажень = 3 аршина;
1 аршин = 16 вершков;
1 вершок = 44,45 мм.


th1

Лабораторная работа №1: Основные понятия объектно-ориентированного программирования

начало

назад

вперед

конец

вопросы

задания

В объектно-ориентированном программировании главной отправной точкой при проектировании программы является не процедура, не действие, а объект. Такой подход достаточно естественен, поскольку в реальном мире нас окружают именно объекты, взаимодействующие друг с другом.

Объектно-ориентированное программирование базируется на трех основных принципах: наследование, инкапсуляция и полиморфизм. Программа, построенная по этим принципам, - это не последовательность операторов, не некий жесткий алгоритм, а совокупность объектов и способов их взаимодействия. Обмен информацией между объектами происходит посредством сообщений.

Объекты

Назовем объектом понятие, абстракцию или любой предмет с четко очерченными границами, имеющий смысл в контексте рассматриваемой прикладной проблемы. Все объекты можно идентифицировать, между объектами можно установить отношение тождества (два Сидоровых Ивана – это разные люди, но они студенты одной группы).

Классы объектов

Классом называют особую структуру, которая может иметь в своем составе поля, методы и свойства. Класс выступает в качестве объектного типа данных, а объект – это конкретный экземпляр класса. Например, два Сидоровых Ивана принадлежат одному и тому же классу объектов, они - студенты группы ТКС-206. Именно с этим связана их одинаковость (одинаковый шифр группы, одно расписание занятий и т.д.).

Каждый конкретный класс имеет свои особенности поведения и характеристики, определяющие этот класс. Например,

Геометрический объект
Объемный | Плоский
 | С вершинами | Без вершин
 |  | Окружность | Эллипс

Наивысший уровень – самый общий и самый простой, каждый последующий уровень более специфический и менее общий. На самом последнем уровне можно определить цвет, стиль заполнения, величину радиуса окружности и т.п.

Если характеристика уже однажды определена для более высокого уровня, то все уровни, расположенные ниже имеют ту же характеристику (если уж определена окружность, понятно, что вершин у нее нет).

Таким образом, классы-наследники могут наследовать характеристики классов-родителей.

Свойства

Свойства – перечень параметров объекта, которые определяют внешний вид и поведение объекта, выделяют уникальные особенности каждого экземпляра. К свойствам относятся: имя, тип, значение, цвет, размер и др. Состояние – совокупность всех свойств данного объекта.

Методы

Метод - это некоторое действие (операция), которое можно выполнять над данным объектом. В результате этого действия в объекте что-нибудь меняется (например, местоположение, цвет и др.). Другими словами можно еще сказать, методом называется команда, которую может выполнять объект. Для каждого класса объектов имеется свой перечень методов, которые можно к нему применить или которые он может выполнить. Например, объект можно удалить с экрана, переместить в другое место.

События

Каждый объект способен реагировать на определенные события – это разновидность свойства объекта. При возникновении события производится его обработка.

События – сигналы, формируемые внешней средой, на которые объект должен отреагировать соответствующим образом.

Средой взаимодействия объектов являются сообщения, генерируемые в результате наступления различных событий.

События наступают в результате действий пользователя – перемещение курсора пользователя, нажатия кнопок мыши или клавиш на клавиатуре, а также в результате работы самих объектов. Для каждого объекта определено множество событий, на которые он может реагировать. Для конкретных экземпляров объекта могут быть определены обработчики каких-то из этих событий, которые и определяют реакцию данного экземпляра объекта.

Объект можно определить как совокупность свойств и методов, а также событий, на которые он может реагировать.

Внешнее управление объектом осуществляется через обработчик событий. Эти обработчики обращаются к методам и свойствам объекта.

Инкапсуляция

С одной стороны объект, обладает определенными свойствами, которые характеризуют его состояние в данный момент. С другой стороны над объектами возможны операции, которые приводят к изменению этих свойств. Доступ к изменению свойств осуществляется только с помощью методов, присущих данному классу объектов. Есть метод, данное свойство данного объекта можно изменить, нет метода – нельзя. Методы как бы «окружают» свойства объекта, говорят, что свойства «инкапсулированы» в объект. Для обеспечения инкапсуляции класс не должен позволять прямого доступа к своим данным. Инкапсуляция - механизм скрытия всех внутренних деталей объекта, не влияющих на его поведение.

Наследование

Классы-наследники могут наследовать характеристики классов-родителей. Т.е. один объект приобретает свойства другого объекта, добавляя к ним свойства, характерные только для него.

Наследование определяет отношение между классами: объекты класса-наследник обладают всеми свойствами и методами объектов класса-родитель и не должны их повторно реализовывать.

Класс Точка (родитель) |  | Класс Окружность (наследник)
Свойства | Методы | Свойства | Методы
Координаты (x,y) | Перемещение | Координаты центра (x, y) | Перемещение
Цвет | Изменение цвета | Цвет | Изменение цвета
 |  | Радиус | Изменение радиуса

Полиморфизм (имеющий много форм)

К объектам разных классов можно применять один и тот же метод, вот только действовать этот метод будет по-разному. Например, к большинству объектов в Windows&Office можно применять одни и те же методы: копирование, перемещение, переименование, удаление и т.п. Однако, механизмы реализации этих методов для разных классов (файл в Windows и документ Word) неодинаковы.

Полиморфизм – возможность использования одних и тех методов для объектов разных классов, только реализация этих методов будет индивидуальной для каждого класса.


th2.htm

Лабораторная работ а №1: Общая организация программы в Delphi

начало

назад

вперед

конец

вопросы

задания

Delphi – это среда разработки программ, ориентированных на работу в Windows. В основе идеологии Delphi лежат методология объектно-ориентированного программирования и технология визуального проектирования.

Включать объекты в свою программу пользователь может вручную, используя соответствующие операторы, или путем визуального программирования, используя заготовки – компоненты.

Работа производится в Интегрированной среде разработки (ИСР) Delphi, которая предоставляет пользователю формы, где размещаются с помощью мыши необходимые компоненты, имеющиеся в библиотеке Delphi. С помощью простых манипуляций мышью можно изменять размеры и расположение этих компонент. При этом в процессе проектирования можно постоянно видеть результат – изображение формы и расположенных на ней компонентов. А самое главное заключается в том, что во время проектирования формы редактор кода Delphi автоматически генерирует код программы, включая в нее соответствующие фрагменты, описывающие данный компонент. В соответствующих диалоговых окнах можно изменить заданные по умолчанию свойства компонентов и, при необходимости, написать обработчики событий.

Компоненты могут быть визуальными, видимыми при работе приложения, и невизуальными, выполняющим некоторые служебные функции, они отображаются в виде значка в процессе проектирования и не видны при работе приложения.

Общая организация программы в Delphi

Программа создаваемая в среде Delphi в процессе проектирования приложения, основана на модульном принципе. Головная программа состоит из объявления списка используемых модулей и нескольких операторов, создающих объекты для необходимых форм и запускающих приложение на выполнение.

Все объекты компонентов размещаются в объектах – формах. Для каждой формы, проектируемой в приложении, Delphi автоматически создает отдельный модуль, в который пользователь может ввести собственный код, создавая обработчики различных событий. Именно в модулях и осуществляется программирование задачи.

Структура головной программы приложения Delphi

Код головной программы создается Delphi автоматически и, как правило, не требует модификации. Пример такой головной программы приведен ниже. Не задумывайтесь пока над ее содержанием, посмотрите только общую структуру модуля.

program Project1;

Программа начинается с ключевого слова program, после которого указывается имя программы. Оно совпадает с именем файла, в котором был сохранен проект. Это же имя присваивается исполняемому файлу приложения. По умолчанию используется имя Project1.

uses

  Forms,

  Unit1 in 'Unit1.pas' {Form1};

В разделе uses перечисляются все модули, загружаемые программой. Первый модуль Forms является системным, а следующие – модулями разработанных пользователем форм.

Данный проект состоит из одной формы с именем Form1, которая содержится в модуле Unit1.

После ключевого слова in указывается имя файла, в котором содержится модуль Unit1.

{$R *.res}

Эта строка представляет собой директиву компилятора, которая связывает с исполняемым модулем файлы ресурсов Windows (.Dfm, .Res). По умолчанию для файлов ресурсов используется расширение .Res.

begin
  Application.Initialize;

  Application.CreateForm(TForm1, Form1);
  Application.Run;

 end.

Оператор Application.Initialize инициализирует приложение.
Application.CreateForm создает объекты формы.
Application.Run начинает выполнение приложения.

Структуры модуля приложения Delphi

Текст программ хранится в модулях, название которого должно совпадать с именем файла. Модуль состоит из трех разделов: интерфейса, реализации и инициализации. Cтруктура модуля приложения Delphi:

Unit Unitl;

Название модуля (Это название используется в предложении Uses при подключении модуля к программе).

Interface
…

Раздел интерфейса

Implementation
…

Раздел реализации (исполняемая часть)

begin
…
end.

Раздел инициализации

Раздел интерфейса начинается ключевым словом Interface, он сообщает компилятору, какая часть модуля является доступной для других модулей программы.

Здесь могут размещаться списки подключаемых модулей, объявления типов, констант, переменных, заголовки функций и процедур, к которым будет доступ из других модулей. Иными словами, в этом разделе перечисляется, все то, что должно быть видимым из программы, которая его использует.

Раздел реализации начинается ключевым словом Implementation и содержит объявления локальных переменных, процедур и функций, поддерживающих работу формы.

Начинается раздел директивой {$R *.dfm}, указывающей компилятору, что в раздел реализации нужно вставить инструкции установки значений свойств формы, которые находятся в файле с расширением .dfm , имя которого совпадает с именем модуля.

Далее в разделе реализации могут помещаться предложения uses, объявления типов, констант, переменных, к которым не будет доступа из других модулей. Здесь же располагаются все тексты процедур и функций, объявленных в разделе interface. Заголовки процедур и функций могут полностью совпадать с заголовками из интерфейсной части или могут отличаться от них полным отсутствием параметров. Если в этой части набран текст функции или процедуры, не представленной в Interface, то данная функция или процедура будет локальной.

Раздел инициализации позволяет выполнить инициализацию переменных модуля. Располагается после раздела реализации между Begin и End.

В этой части помещают операторы, которые должны выполняться один раз при первом обращении к модулю (после ключевого слова Initialization). Или операторы, выполняемые при любом завершении модуля (после ключевого слова Finalization). Эта часть является необязательной. На практике данный подход используется редко, поэтому обычно после Implementation сразу ставится End с точкой (без Begin).

Структура событийной процедуры

Procedure <название процедуры>

Заголовок процедуры. Название процедуры состоит из двух частей: названия объекта + название события

Const
     <имя константы> = <значение константы>;
         ……………………………………………
     <имя константы> = <значение константы>;

Раздел описания констант

Type
     <имя типа> = <тип>;
         ……………………………………………
     <имя типа> = <тип>;

Раздел типов

Var
      <имя переменной>:<тип>;
         ……………………………………………
      <имя переменной>:<тип>;

Раздел описания переменных

<Тексты локальных процедур и функций с заголовками>

Раздел процедур и функций

Begin
        <инструкции>
End;

Раздел, в котором пишутся инструкции процедуры обработки событий

Пример структуры модуля приложения

Создадим следующее приложение: ввести два числа, найти их сумму и показать результат.

Форма данного приложения будет содержать следующие компоненты: три текстовых окна Tedit для ввода данных и вывода результата, одну метку Tlabel для изображения на экране знака + и две кнопки Tbutton, одна – для реализации задачи, другая – для ее завершения.

Модуль данного приложения практически весь генерируется автоматически Delphi при проектировании приложения. Пользователь лишь вводит свой код для обработки событий, наступающих при нажатии кнопок (в тексте модуля он выделен жирным шрифтом).

Структура модуля данного приложения:

unit Unit1;

Модуль начинается с ключевого слова unit, после которого указывается имя модуля, совпадающее с именем файла, где сохранен модуль

interface

uses
  Windows, Messages, SysUtils, Variants,
  Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

Открытый интерфейс модуля

Список подключаемых библиотечных модулей

type

  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;

Объявление класса формы, а также типов всех компонентов, включаемых в класс формы

procedure Button1Click(Sender: Tobject);
procedure Button2Click(Sender: Tobject);

Объявление процедур, описывающих действия, которые должны происходить при нажатии кнопок

private
    { Private declarations }

Закрытый раздел класса. Объявление переменных, функций и процедур, включаемых в класс формы, но недоступных для других модулей.

public
    { Public declarations }
end;

Открытый раздел класса. Объявление переменных, функций и процедур, включаемых в класс формы, доступных для других модулей

var

  Form1: TForm1;

Объявление типов, констант, переменных, функций и процедур, к которым будет доступ из других модулей, но которые не включаются в класс формы

implementation

Реализация модуля.
Сюда могут помещаться предложения uses, объявления типов, констант, переменных, к которым не будет доступа из других модулей. Здесь же располагаются все реализации процедур и функций объявленных в разделе interface.

{$R *.dfm}

Директива компилятора, обеспечивающая компоновку файлов ресурсов формы.
Удалять из текста модуля нельзя, так как загрузочный модуль не будет создан.

procedure TForm1.Button1Click(Sender: TObject);

var
   a,b,c :integer;
begin
 a:=strtoint(edit1.Text);
 b:=strtoint(edit2.Text);
 c:=a+b;
 Edit3.Text:=inttostr(c);
end;

Реализация событийной процедуры, реализующей обработки события Click на кнопке Button1, в результате выполнения которой складывается два введенных числа и полученная сумма выводится на экран.

procedure TForm1.Button2Click(Sender: TObject);
begin
 Close;
end;
end.

Реализация событийной процедуры, реализующей обработки события Click на кнопке Button2, в результате выполнения которой заканчивается работа приложения.


th3

Лабораторная работа №1: Структура проекта в Delphi

конец

вопросы

задания

Проект Delphi представляет собой набор программных единиц – модулей, которые хранятся в отдельных файлах.

Примечание. В Delphi существуют файл проекта и файлы проекта. Это разные вещи. Файл проекта – это файл головной программы с расширением.Dpr, файлы проекта – это набор всех файлов приложения.

Файл с расширением .Dpr содержит основную информацию о проекте. По умолчанию этот файл называется Project1.dpr. Новичкам редактировать его не рекомендуется.

Файл с расширением .Pas – это файл модуля. В нем хранится текст программы на языке Object Pascal. По умолчанию этот файл называется Unit1.pas. Это единственный файл, который можно редактировать начинающим.

Файл с расширением .Dfm содержит информацию о внешнем виде формы. Информация закодирована.

Файл с расширением .Res – это ресурсовый файл, в котором хранится информация о курсорах, иконках и т.п.

Файл с расширением .Exe – исполняемый файл приложения.

Файлы с расширениями .~Df, .~Pa – файлы со старыми версиями приложения.

У файлов с расширениями Pas, Dfm, ~Df, ~Pa всегда одинаковое имя (по умолчанию Unit1).

У файлов с расширениями Dpr, Exe, Res – также одинаковое имя (по умолчанию Project1).

Примечание.

  1. При сохранении нового проекта приложения рекомендуется создавать отдельную папку.
  2. Названия Project1 и Unit1 рекомендуется не изменять.
  3. Копирование файлов проекта на дискету или в другую папку выполняется только с помощью файлового менеджера Windows (например, проводника). В среде Delphi это делать запрещается.
  4. Файлы с расширением Exe, ~Df, ~Pa, Dsm можно не копировать.


th4

Лабораторная работа №1: Общее описание среды Delphi

конец

вопросы

задания

После запуска Delphi на экране компьютера появляется основное окно интегрированной среды разработки (ИСР).

В верхней части окна ИСР отображается полоса главного меню. Ниже две инструментальные панели:

· Левая панель содержит два ряда кнопок, дублирующих некоторые наиболее часто используемые команды меню.

· Правая панель содержит панель библиотеки визуальных компонентов (Visual Component Library - VCL), в дальнейшем просто палитра компонентов.

Палитра компонентов позволяет выбрать с помощью иконок визуальные и другие компоненты, из которых, как из «строительных блоков», собирается разрабатываемое Delphi-приложение.

Палитра содержит ряд страниц, закладки которых видны в ее верхней части. Всего страниц тринадцать. Наиболее употребляемые из них: Standard (стандартные компоненты) и Additional (дополнительные компоненты).

Стандартные компоненты. Это классы, реализующие интерфейсные элементы среды Windows. Среди них: главное меню (MainMenu), всплывающее меню (PopupMenu), этикетка или метка (Label), текстовое поле (Edit) и другие.

Дополнительные компоненты. Эти классы представляют собой различные дополнительные интерфейсные элементы – графические кнопки (BitBtn), редактор с вводом по шаблону (MaskEdit) и другие.

Правее полосы главного меню располагается небольшая инструментальная панель, которая служит для сохранения и выбора различных конфигураций окна ИСР.

На основном окне интегрированной среды разработки расположены еще три окна:

Окно формы Form1 представляет собой заготовку (макет) окна разрабатываемого приложения.

Окно инспектора объектов Object Inspector позволяет изменять свойства (характеристики) объектов: формы, командных кнопок, полей ввода и т.д.

Инспектор объектов состоит из двух страниц: Properties (свойства) и Events (события).

Каждая страница разделена на две части. На странице свойств в левой части находится название свойства, а в правой - его значение.

"+" слева от названия указывает на то, что свойство состоит из нескольких значений. Значениями свойств могут быть слова, числа, значения из раскрывающегося списка.

Нажав на "▼" справа от поля значения, можно получить раскрывающийся список значений.

При нажатии на "..." вызывается специальное диалоговое окно.

Примечание: если значением является число или текст, то после его набора лучше нажать Enter, иначе оно может быть не зафиксировано. При нажатии на "Esc" ввод отменяется.

Страница Events используется для задания реакции на событие. Страница также состоит из двух частей. В первой - название события, а во второй - название процедур, обрабатывающих данное событие. Если в правой части ничего не написано, то программа на данное событие не реагирует. Название процедуры состоит из двух частей: названия объекта + название события.

Для создания новой реакции на событие необходимо дважды щелкнуть в правой половине напротив нужного события. В этом месте появится название новой процедуры, а на экране - окно редактора кода. Например:

procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;

Примечание:

1) если Вы случайно создали ненужную реакцию на событие, то не стоит обращать на это внимание: при сохранении или выполнении программы данная ошибка исправляется автоматически средой Delphi;

2) запрещается исправлять текст программы, написанный самой Delphi, иначе вся программа может быть уничтожена.

Окно Object TreeView (дерево объектов) отображает иерархию компонентов приложения с точки зрения их принадлежности друг другу.

В дереве объектов можно осуществлять операции щелчка и перетаскивания, перемещая дочерние компоненты в другие контейнеры, при этом изменения синхронно отображаются в редакторе форм.

Окно Code Editor (редактор кода), в котором между Begin и End можно печатать инструкции Object Pascal, реализующие процедуру обработки событий.

Краткая характеристика некоторых компонентов

Ниже перечислены компоненты, их основные свойства и события, при совершении которых будут выполняться запрограммированные действия.

Компонент Form (экранная форма). Форма представляет не только внешний вид окна приложения, но и сама является полноценным компонентом с собственными свойствами и событиями, хотя на палитре компонентов ее нет.

Основные свойства компонента Form

Align | Задает режим выравнивания объектов внутри формы.
BorderStyle | Задает стиль обрамления формы, а также поведение формы (возможность менять размеры окна).
Caption | Задает заголовок окна формы.
Color | Задает цвет формы.
Font | Задает атрибуты шрифта формы.

Значения свойств можно задать либо в окне свойств объекта, либо в программе.

Пример использования в программе

Основное событие компоненты Form

Load

Происходит при загрузке формы.

Компонент Label (надпись или метка) [image]. Назначение – нести на себе надпись. Можно использовать для вывода ответа или пояснения вводимых данных. Относится к группе Standard.

Основные свойства компоненты Label

Caption | Задает заголовок надписи, выводимой на экран
Alignment | Задает режим выравнивания текста метки.
AutoSize | Позволяет автоматически менять размеры метки, чтобы соответствовать размерам надписи (значение True).
Font | Задает шрифт, используемый для отображения текста
Visible | Задает видимость надписи на экране. Имеет два значения. Если значение True, то надпись видна, False – нет.
WordWrap | Разрешает разбивку и перенос непомещающихся строк, следует согласовывать значение этого свойства со свойством AutoSize.

Пример использования в программе

Компонент Edit (поле редактирования) [image]. Используется для ввода/вывода чисел и текста в программу. Относится к группе Standard.

Основные свойства компонента Edit

AutoSize | Задает необходимость изменения размера компонента при изменении размера шрифта (если True).
BorderStyle | Задает стиль обрамления поля.
Text | Задает содержимое строки редактирования.
MaxLength | Ограничивает число вводимых в поле символов.
ReadOnly | Запрещает редактировать отображаемый текст (если True).

Пример использования в программе

Основное событие компоненты Label

Changе

Происходит, когда пользователь изменяет текст

Компонент Button (командная кнопка) [image]. Используется для задания реакции на событие. Относится к группе Standard.

Основные свойства Button

Caption | Задает название кнопки.
Height | Задает высоту кнопки.
Width | Задает ширину кнопки.
Left | Задает расстояние от левой границы кнопки до левой границы формы
Top | Задает расстояние от верхней границы кнопки до верхней границы формы

Основное событие компонента Button

OnClick

Происходит, когда пользователь щелкает основной (левой) кнопкой мыши на объекте.

Пример использования в программе


th5

Лабораторная работа №1: Пример создания, сохранения, компиляции и отладки простого приложения

начало

назад

вперед

конец

вопросы

задания

Задание 1. Создать приложение, которое обеспечивает ввод двух целых чисел, вычисляет их сумму и выводит значение результата.

Следуйте рекомендациям, описанным ниже.

1. Запустите ИСР Delphi с помощью команды Главного меню Windows Пуск ® Программы ® Borland Delphi 6 ® Delphi 6.

2. Создайте новый проект при помощи команды File ® New ® Application. В раскрытом окне формы можно размещать визуальные компоненты для реализации проекта приложения.

3. Сохраните новый проект командой меню File ® Save Project As. В появившемся окне Save Unit1 As с помощью кнопки [image] создайте новую папку для файлов создаваемого проекта с названием «Сумма чисел» на Рабочем столе. Откройте созданную папку и нажмите кнопку Сохранить. После сохранения файла модуля Unit1.pas откроется окно Save Project As. Задайте имя файла проекта «Summa»и нажмите кнопку Сохранить.

4. Измените заголовок формы Form1.

Для этого в окне Инспектора объектов откройте страницу Свойства (Properties), выберите свойство Caption (Заголовок) и задайте его новое значение «Сумма двух целых чисел».

5. Разместите на форме компоненты Edit1, Edit2, Edit3, Label1, Button1, используя соответствующие пиктограммы
, [image] , [image] группы Standard.

Для этого щелкните на вкладке Standard палитры компонентов, затем выберите пиктограмму требуемой компоненты и щелкните в окне формы в том месте, где хотите ее расположить.

Примечание. Выделенный компонент формы окружен восемью маркерами. Именно его свойства отображаются в окне Инспектора объектов. Выделенный компонент можно перемещать по форме, меняя его местоположение. Можно также менять его размеры, потянув за один из маркеров.

6. Измените свойства компонента Label1: Задайте свойство Caption (заголовок) как «+», в списке свойств Font (Шрифт) свойству Size (Размер) присвойте значение 20.

7. Измените свойства компонента Button1: Задайте свойство Caption (заголовок) как «=», в списке свойств Font (Шрифт) свойству Size (Размер) присвойте значение 20.

8. Выровняйте компоненты на форме. Для этого выделите их все при нажатой клавише Shift, затем в контекстном меню выберите команду Position ® Align.

9. Измените свойства компонентов Edit1, Edit2, Edit3: Удалите текст из свойства Text.

10. Добавьте на форму еще три объекта Label, расположите их над объектами Edit1 - Edit3 и задайте их свойствам Caption значения «Слагаемое», «Слагаемое», и «Сумма».

11. Активизируйте окно Редактора кода, нажав F12. Просмотрите сгенерированный Delphi модуль описания формы и размещенных на ней компонентов.

12. Сохраните изменения, внесенные в проект, командой меню File ® Save All.

13. Откомпилируйте созданный проект командой меню Project ® Compile summa (summa – это имя проекта).

14. С помощью файлового менеджера просмотрите папку проекта.

summa.cfg – файл конфигурации проекта

summa.dof – файл параметров проекта.

summa.dpr – файл проекта Delphi. Главная программа приложения.

summa.exe – откомпилированный проект. Исполняемая Windows-программа.

summa.res – файл ресурсов Windows.

Unit1.~dfm, unit1.~pas – файлы резервных копий.

Unit1.dcu – откомпилированный модуль.

Unit1.dfm – файл формы (двоичный файл) содержит начальные данные для компонент.

Unit1.pas – исходный код модуля формы.

15. Закройте окно файлового менеджера, активизируйте окно Delphi и запустите проект на выполнение командой меню Run ® Run.

16. Рассмотрите окно созданной формы. Обратите внимание, что оно имеет стандартные атрибуты окна Windows.

17. Завершите работу приложения любым из стандартных методов.

18. Создайте код обработчика событий: при нажатии на кнопку «=» два введенных должны складываться.

Для этого: выделите кнопку Button1, в окне Инспектора объектов перейдите на вкладку Events (События), выберите событие OnClick и дважды щелкните левой кнопкой мыши на пустом поле списка. В открывшемся окне Редактора кода между операторами begin и end разместите необходимые операторы.

Окончательно процедура обработки события щелчка на кнопке Button1 должна выглядеть следующим образом:

19. Сохраните изменения в проекте.

20. Запустите приложение на выполнение.

21. После проверки работы приложения, закройте его.

22. Запустите приложение из Windows, используя исполняемый файл.

Задание 2. В созданном проекте измените свойства компонентов Label2, Label3, Label4, задав стиль шрифта – курсив, цвет шрифта – синий, размер символов – 10 пунктов.

Задание 3. В созданный проект добавьте кнопку на закрытие приложения. В редакторе кода используйте оператор Close.

Задание 4. Создайте новый проект, реализующий ввод двух целых чисел, их вещественное деление и вывод результата на экран. При выводе результата в текстовое окно используйте функцию преобразования вещественного числа в текстовую строку FloatToStr.


th6

Лабораторная рабо та №1: Ошибки выполнения приложения

конец

вопросы

задания

Во время компиляции текст программы проверяется на отсутствие синтаксических ошибок. Компилятор просматривает программу от начала. Если обнаруживается ошибка, то процесс компиляции приостанавливается и в окне редактора кода выделяется строка, которая, по мнению компилятора, содержит ошибочную конструкцию.

В нижнюю часть окна редактора кода компилятор выводит сообщения об ошибках. Первая ошибка – это первая от начала текста программы синтаксическая ошибка, обнаруженная компилятором. Наличие в тексте даже одной синтаксической ошибки приводит к возникновению второй, фатальной ошибки (Fatal Error) – невозможности генерации исполняемой программы.

Примечание. Строка, выделенная компилятором, не всегда содержит ошибку. Довольно часто ошибочной является инструкция, находящаяся в предыдущей строке.

Наиболее типичные ошибки компиляции

Сообщения компилятора

Вероятная причина

Undeclared identifier
(Необъявленный идентификатор)

Используется переменная, не объявленная в разделе var программы;

Ошибка при написании имени переменной;

Ошибка при написании имени инструкции (оператора).

Unterminated string
(Незавершенная строка)

При записи строковой константы не поставлена завершающая кавычка.

Incompaible types … and …
(Несовместимые типы)

В операторе присваивания тип выражения не соответствует или не может быть приведен к типу переменной, получающей значение выражения.

Missing operator or semicolon
(Отсутствует оператор или точка с запятой)

Не поставлена точка с запятой после инструкции программы.

Если синтаксических ошибок в программе нет, компилятор создаст исполняемый файл программы, который позже можно будет запустить из Windows. Имя исполняемого файла такое же, как и у файла проекта, а расширение - .exe. Delphi помещает исполняемый файл в ту же папку, где находится файл проекта.

Предупреждения и подсказки компилятора

При обнаружении в программе неточностей, которые не являются ошибками, компилятор выводит подсказки и предупреждения.

Наиболее часто выводимые подсказки и предупреждения:

сообщение об объявленной, но не используемой в программе переменной:

- [Hint] Unit1.pas(35): Variable 'd' is declared but never used in 'TForm1.Button1Click' (сообщение об объявленной переменной, не используемой в программе ):

- [Warning] Unit1.pas(39): Variable 'a' might not have been initialized (переменной, вероятно, не присвоено начальное значение)

Ошибки времени выполнения

Во время работы приложения могут возникать ошибки, которые называются ошибками времени выполнения. В большинстве случаев причинами являются неверные исходные данные.

Созданное приложение можно запустить на выполнение в ОС Windows и из среды Delphi, при этом сообщение об одной и той же ошибке времени выполнения будет выводиться на экран в разного вида окна.

Например, если одно из целых чисел ввести не как число, а как букву, или как вещественное число, то на экран будет выведено следующее окно с сообщением об ошибке и выполнение программы приостанавливается:

А если программа запускается из среды Delphi с помощью встроенного отладчика, то при возникновении ошибки также появляется окно с сообщением об ошибке, и выполнение программы приостанавливается, но в этом окне помимо сообщения об ошибке указывается тип ошибки. Например, в этом окне сообщается о невозможности преобразования строки «у» в число:

Чтобы остановить работу программы, в которой возникла ошибка, надо выполнить команду меню Run ® Program Reset.

При разработке проекта программист должен предусмотреть все возможные варианты некорректных действий пользователя, которые могут привести к возникновению ошибок времени выполнения, и обеспечить способы защиты от них.


th7

Лабораторная работ а №1: Программирование алгоритмов линейной структуры

начало

назад

вперед

конец

вопросы

задания

Основные элементы языка Pascal

Оператор присваивания

В результате выполнения оператора присваивания переменная получает значение. Формат оператора присваивания:

<Имя Переменной> := <Выражение>,

где двоеточие и следующий за ним знак равенства — это символ оператора присваивания.

После каждой инструкции программы ставится символ “точка с запятой”.

Примеры:

Counter:=0;
d:=b*b-4*a*c;
pi:=3.1415926;
z:=(rl+r2)/(rl*r2);

Выражение

Выражение состоит из операндов и операций, которые выполняются над операндами.

При вычислении значений выражений соблюдается приоритет операций. Операции с более высоким приоритетом выполняются раньше операций, приоритет которых ниже. Если приоритет операций одинаков, то операция, стоящая левее, выполняется раньше. Для задания любого нужного порядка выполнения операций в выражении можно использовать скобки.

Выражение, заключенное в скобки, трактуется как один операнд. Это значит, что операции, стоящие в скобках, будут выполняться в обычном порядке, но раньше, чем операции, находящиеся за скобками. При записи выражений, содержащих скобки, должна соблюдаться парность скобок, т. е. число открывающих скобок должно быть равно числу закрывающих скобок. Нарушение парности скобок наиболее распространенная ошибка при записи выражений.

Арифметические выражения

Операндами арифметических выражений могут быть числа (константы) и переменные, функции и арифметические выражения, заключенные в круглые скобки. Операции обозначают действия, выполняемые над операндами.

В простейшем случае арифметическое выражение — это константа или переменная

Тип результата зависит от типа операндов. Тип константы, входящей в выражение определяется видом самой константы. Например, константы 0, 1 и -512 целого типа (INTEGER), а константы 1.0, 0.0, 3.2е-05 — вещественного типа (REAL).

Арифметические операции языка Pascal представлены в таблице:

Операция

Действие

Выражения, использующее арифметические операции

Тип операндов

Тип результата

+

Сложение

A+B, A-B, A*B

REAL

REAL

-

Вычитание

INTEGER

INTEGER

*

Умножение

INTEGER, REAL

REAL

/

Деление

A/B

REAL

REAL

INTEGER

REAL

INTEGER, REAL

REAL

DIV

деление нацело (отбрасывание остатка)

A DIV B

INTEGER

INTEGER

MOD

вычисление остатка от деления

A MOD B

INTEGER

INTEGER

Примеры арифметических выражений:

123
0.001
i
А+В/С
Summa*0.75
(В1+ВЗ+ВЗ)/100
Cena MOD 1000
(Cena DIV 1000)+Cena
(rl+r2+r3)/(rl*r2*r3)

В арифметических выражениях приняты следующие правила выполнения операций: *, /, DIV, MOD имеют более высокий приоритет, чем + и -.

Примеры:

Выражение | Программная запись
 | a*b + c*d
 | (a+b) / (c+d)
 | a+c*d/b+e/(f*g) или a+c*d/b+e/f/g

Строковые выражения

Операндами строковых выражений могут быть символы или последовательность символов, заключенная в апострофы (строки), Подробнее строковые выражения и операции над ними будут разобраны в лабораторной работе «Работа со строками».

Логические выражения

Результатом выполнения логических выражений является значение True или False. Для написания простых логических выражений используются знаки отношений (=, <, >, <=, >=, <>), а для составления сложных – логические операции (Not, And,Or). Подробнее логические операции и логические выражения будут разобраны в лабораторной работе «Разветвляющие процессы».

Выполнение оператора присваивания

Выполнение инструкции присваивания заключается в следующем: сначала вычисляется результат выражения, находящегося справа от символа присваивания, затем вычисленное значение записывается в область памяти, предназначенной для хранения переменной, имя которой стоит слева от символа присваивания (другими словами вычисленное значение присваивается этой переменной).

Например, в результате выполнения инструкций:

i=0 | Значение переменной i становится равным нулю;
а=b+с; | Значением переменной а будет число, равное сумме значений переменных b и с;
j=j+1; | Значение переменной j увеличивается на единицу.
Label1.Caption=’Пример’; | Задается заголовок надписи.
Edit1.Text=FloatToStr(a); | Задается значение текстового поля.

Оператор присваивания считается верным, если тип выражения соответствует, или может быть приведен к типу переменной. Переменной типа REAL можно присвоить значение выражения типа REAL или INTEGER. Переменной типа INTEGER можно присвоить значение выражения только типа INTEGER.

Во время перевода исходной программы в исполняемую компилятор проверяет соответствие типов выражений и переменных. Если тип выражения не соответствует типу переменной, то компилятор выдает сообщение об ошибке.

Комментарии

Для облегчения понимания текста программы в него могут включаться комментарии — любой текст, заключенный в фигурные скобки.

{Этот текст является комментарием}

Комментарии обычно располагают на отдельной строке или в конце строки текста программы после инструкции. Комментарий может занимать несколько строк текста программы.

Стандартные функции и процедуры

Задание 5. Выполните индивидуальное задание 1 уровня. Сохраните проект.

Задание 6. Выполните индивидуальное задание 2 уровня. Сохраните проект.

Задание 7. Выполните индивидуальное задание 3 уровня. Сохраните проект.


th7_1

Лабораторная работа №1: Основные элементы языка Object Pascal

назад

Переменные и константы

В программе каждый элемент данных является либо константой, либо переменной.

Константами программе называют простейшие объекты программы, значения которых заранее известны и в процессе выполнения программы не изменяются.

В разделе описания констант производится присваивание константам постоянных значений. Раздел начинается зарезервированным словом const, за которым следует ряд выражений, присваивающих именам констант постоянные числовые или строковые значения. Выражения присваивания заканчиваются точкой с запятой.

const имя константы = значение константы;

Примеры:

const

     MaxInd: integer = 100; {Типизированная константа}
     Name = ‘Петя’;           {Строковая константа}
     g = 9.8;           {Вещественная константа}

Переменные в программе – это простейшие объекты программы, предназначенные для хранения в памяти некоторых значений и обработки их по заданному алгоритму. Все переменные в программе перед использованием нужно объявлять (декларировать). При объявлении указывается имя переменной и ее тип. Имя переменной однозначно связывает переменную с некоторой физической областью памяти компьютера (ячейкой для хранения переменной), а тип переменной определяет способ хранения и представления (формат) в памяти компьютерной системы.

Значение переменной – это данные, которые хранятся и обрабатываются по заданному алгоритму в процессе выполнения программы. В разное время переменные могут иметь различные значения.

Каждая переменная, используемая в программе, должна иметь имя. В качестве имени можно использовать буквы латинского алфавита, цифры и символ нижней черты _; первым символом в имени не должна быть цифра; пробелы в имени недопустимы; прописные и строчные буквы воспринимаются программой как синонимы.

Основные типы данных

Компьютер обрабатывает данные различных типов: целые числа, дробные числа, символы. Создавая переменную, программист должен указать тип переменной, и тем самым определить, для хранения каких данных она предназначена.

В Pascal существуют четыре основных типа данных:

INTEGER | целый
REAL | вещественный
CHAR | символьный
BOOLEAN | логический

Значением переменной типа INTEGER может быть положительное или отрицательное целое число, а также ноль. Для описания целочисленного типа помимо типа INTEGER можно использовать также типы BYTE, WORD, LONGINT. Для каждого из этих типов определен свой диапазон значений.

Идентификатор типа | Диапазон значений
Shortint (короткое целое) | -128..127
Integer (целое) | 32 768..32 676
Longint (длинное целое) | -2 147 483 648.. 2 147 483 647
Byte (байт) | 0..255
Word (слово) | 0..65 535

Переменные и константы типа REAL используются для хранения вещественных чисел. На физическом уровне такие числа хранятся в памяти компьютера в виде мантиссы и порядка. Вместо 10 в степени, употребляется буква Е. Такая форма называется представлением чисел с плавающей запятой. Например, вещественное число 0.31415926*101 в программе будет выглядеть как .31415926Е01, 0.1*10-3 как .1 Е–03, 0.100002*106 как .100002Е 6.

Для описания вещественного типа помимо типа REAL можно использовать также типы Single , Double, Extended, Comp. Для каждого из этих типов определен свой диапазон значений.

Идентификатор типа | Диапазон значений | Число знач. цифр | Количество байт
Real | 2.9e-39..1.7e38 | 11-12 | 6
Single | 1.5e-45..3.4e38 | 7-8 | 4
Double | 5.0e-324..1.7e308 | 15-16 | 8
Extended | 3.4e-4932..1.1e4932 | 19-20 | 10
Comp | 9.2e18..9.2e18 |  | 8

Описание переменных

В программах на языке Pascal каждая переменная перед использованием должна быть описана. С помощью описания устанавливается не только факт существования переменной, но и задается ее тип, тем самым определяется диапазон допустимых значений.

В тексте программы описание переменных начинается с ключевого слова var, каждая переменная, как правило, помещается на отдельной строке. После имени переменной через двоеточие указывается тип переменной, затем ставится символ “точка с запятой”.

Примеры:

var

  а: real;
  b: real;
  i: integer;

В приведенном примере объявлены две переменные типа REAL и одна переменная типа INTEGER.

Если в программе несколько переменных одного типа, то можно через запятую перечислить имена переменных, относящихся к одному типу, и после имени последней переменной через двоеточие указать тип.

Примеры:

var

а,b,с: real;
xl,x2: real;

Операторы

Оператор – это такая синтаксическая единица, которая используется в программе для выполнения отдельного предписания.

Для присваивания переменной вычисленного значения используется оператор присваивания.

Для организации последовательности выполняемых действий используются алгоритмические операторы (операторы безусловных переходов, условные операторы, операторы циклов).


th7_2

Лабораторная работа №1: Стандартные процедуры и функции

Библиотечные модули Delphi содержат большое количество стандартных подпрограмм (процедур и функций). Ниже приведены наиболее часто используемые.

В приведенных ниже таблицах Real означают любой вещественный тип, Integer – любой целый, String – символьный.

Математические функции

Обращение

Тип параметра

Тип результата

Описание

Библ. модуль

Тригонометрические

ArcCos(x)

Real

Real

Арккосинус

Math

ArcCot(x)

Real

Real

Арккотангенс

Math

ArcSin(x)

Real

Real

Арксинус

Math

ArcTan(x)

Real

Real

Арктангенс (квадрант не учитывается)

System

ArcTan2(y,x)

y-Real, x-Real

Real

Вычисляет арктангенс y/x и возвращает угол в правильном квадранте

Math

Cos(x)

Real

Real

Косинус

Math

Cosecant(x)

Real

Real

Косеканс (1/Sin(x))

Math

Cotan(x)

Real

Real

Котангенс

Math

Sec(x)

Real

Real

Секанс (1/Cos(x))

Math

Sin(x)

Real

Real

Синус

Math

Tan(x)

Real

Real

Тангенс

Math

Логарифмические

Ln(x)

Real

Real

Натуральный логарифм

System

LnXP1(x)

Real

Real

Натуральный логарифм от (X+1). Используется, когда значение Х близко к 0

Math

Log10(x)

Real

Real

Логарифм числа по основанию 1.

Math

Log2(x)

Real

Real

Логарифм числа по основанию 2

Math

LogN(x)

Real

Real

Логарифм числа по указанному основанию.

Math

Экспоненциальные

Exp(x)

Real

Real

Экспонента числа.

System

IntPower(y,x)

y-Real, x-Integer

Real

Возведение y в целочисленную степень x

Math

IntPower(y,x)

y-Real, x- Real

Real

Возведение y в вещественную степень x

Math

Разного назначения

Abs(x)

Real|
Integer

Тип параметра

Абсолютное значение (модуль) числа

System

Ceil(x)

Real

Integer

Ближайшее меньшее целое

Math

Floor(x)

Real

Integer

Ближайшее большее целое

Math

Frac(x)

Real|
Integer

Тип параметра

Дробная часть числа

System

Int(x)

Real|
Integer

Тип параметра

Целая часть числа

System

Pi

-

-

π = 3.141592653…

System

Random

-

-

Псевдослучайное число, равномерно распределенное в диапазоне 0…[1]

System

Random(x)

Integer

Integer

Псевдослучайное целое число, равномерно распределенное в диапазоне 0…[x-1]

System

Randomize

-

-

Инициализация генератора псевдослучайных чисел

System

Round(x)

Real

Integer

Округляет число до ближайшего целого

System

Sign(x)

Integer

Определяет знак числа.

Math

Sqr(x)

Real

Real

Число, возведенное в квадрат

System

Sqrt(x)

Real

Real

Квадратный корень числа

System

Trunc(x)

Real

Integer

Ближайшее целое число, меньшее или равное x, если x≥0, и большее или равное x, если x<0

System

Функции преобразования типов данных

Обращение

Тип параметра

Тип результата

Описание

Библ. модуль

Преобразование строк в другие типы

StrToInt(S)

String

Integer

Преобразование символов строки S в целое число

SysUtils

StrToFloat(S)

String

Real

Преобразование символов строки S в вещественное число

SysUtils

Обратное преобразование

FloatToStr(x)

Real

String

Преобразование вещественного числа x в строку

SysUtils

IntToStr(x)

Integer

String

Преобразование целого числа x в строку

SysUtils

FloatToStrF (x,Format, precision, digits)

x-Real, Format-спецификация формата, precision- Integer, digits- Integer

String

Преобразование вещественного числа в форматированную строку

SysUtils

FormatFloat (Format, x)

Format- String,
x- Real

String

Преобразование вещественного числа в строку символов в соответствии с указанным форматом

SysUtils

Процедуры общего назначения

Ниже перечисленные процедуры не имеют параметров.

Обращение | Описание
Beep | Выдает звуковой сигнал, вызывая функцию Windows Api MessageBeep
Exit | Выполняет немедленный выход из текущей процедуры.
Break | Выполняет немедленный выход из текущего оператора цикла for, while или repeat. Управление передается на следующий после цикла оператор.
Continue | Прерывает текущую итерацию оператора цикла for, while или repeat и переходит на начало следующей итерации.


index

Лабораторная работа №2: Управляющие структуры. Программирование алгоритмов разветвляющейся структуры

начало

назад

вперед

конец

вопросы

задания

Темы:

Основные логические операции

Условные операторы. Оператор условия If

Условные операторы. Оператор выбора Case

Краткая характеристика некоторых компонентов, наиболее часто используемых в примерах для построения управляющих конструкций

Задания к лабораторной работе №2 первого уровня

Задания к лабораторной работе №2 второго уровня

Задания к лабораторной работе №2 третьего уровня

Контрольные вопросы и задания


quetion

Лабораторная работа №2: Контрольные вопросы и задания

конец

вопросы

задания

1. С помощью какого оператора реализуется алгоритмическая структура «Развилка»? Нарисуйте ее блок-схему.

2. С помощью какого оператора реализуется алгоритмическая структура «Выбор»? Нарисуйте ее блок-схему.

3. Перечислите знаки отношений

4. Перечислите основные логические операции.

5. Когда применяется условный оператор?

6. Назовите два вида условного оператора.

7. Что позволяет составной оператор?

8. Что позволяет делать оператор выбора?

9. Что такое селектор?

10. Приведите пример на использование оператора условия.

11. Приведите пример на использование оператора выбора.

12. Для чего служит кнопка с независимой фиксацией?

13. Опишите свойство Checked.

14. Изучите и опишите информацию о компоненте RadioButton палитры Standard по справке Delphi.

15. В чем различие между объектами CheckBox и RadioButton?

16. Назначение объекта RadioGroup.

17. Как задать список элементов-переключателей в панели RadioGroup?

18. По какому свойству RadioGroup определяется выбранный переключатель? Как задать этому свойству значение.

19. Какое свойство объекта Label можно использовать для вывода ответа?

20. Какое свойство объекта Edit можно использовать для вывода ответа?


tasks

Лабораторная работа №2: Индивидуальные задания

конец

вопросы

задания

Задания к лабораторной работе №2 первого уровня

В следующих задачах организовать выполнение алгоритма следующим образом: выбор вычисления по той или иной формуле - с помощью элемента управления переключатель, форматный или бесформатный вывод - с помощью элемента управления флажок.

Вариант задания

Формулировка задачи

Вычислить площадь и периметр прямоугольника, если задана длина одной стороны (a) и коэффициент n (%), позволяющий вычислить длину второй стороны (b=n*a).

Вычислить периметр и площадь прямоугольного треугольника по заданным длинам двух катетов a и b.

Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.

Вычислить площади геометрических фигур: прямоугольника и треугольника по заданным сторонам.

Вычислить площади геометрических фигур: трапеции и круга.

По известному радиусу вычислить объем и площадь поверхности шара.

Заданы координаты трех вершин треугольника. Найти его периметр и площадь.

Даны два числа. Найти среднее арифметическое кубов этих чисел и среднее геометрическое модулей этих чисел.

Даны два числа. Вычислить их сумму, разность, произведение и частное.

Дана сторона равностороннего треугольника. Найти площадь этого треугольника, его высоту, радиусы вписанной и описанной окружностей.

Вычислить объем и площадь полной поверхности цилиндра, если известны высота и радиус основания.

Заданы стороны прямоугольника. Определить его периметр, площадь и длину диагонали.

Заданы длина, ширина и высота параллелепипеда. Определить его объем и площадь поверхности.

Для двух целых чисел А и В определить сумму S, разность R и среднее арифметическое SR.

Переменной А присвоить ее значение, увеличенное в N раз, 2N раз, 3N раз.

Поменяйте между собой значения переменных А и В, воспользовавшись третьей переменной С, без использования третьей переменной.

В зависимости от названия реки, выдать сообщение о ее длине. В зависимости от названия горы, выдать сообщение о ее высоте.

В зависимости от дня недели, выдать сообщение о его номере. В зависимости от номера месяца, выдать его название.

Напечатать числа a, b, c в порядке возрастания, в порядке убывания.

Найти количество отрицательных чисел среди a, b, c и абсолютное значение суммы этих чисел.

Задания к лабораторной работе №2 второго уровня

Организовать разветвляющийся процесс для решения следующих задач.

Вариант задания | Формулировка задачи
1. | Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвёртую степень – отрицательные.
2. | Даны две точки А(х1, у1) и В(х2, у2). Составить алгоритм, определяющий, которая из точек находится ближе к началу координат
3. | Даны действительные числа х и у, не равные друг другу. Меньшее из этих двух чисел заменить половиной их суммы, а большее – их удвоенным произведением.
4. | На плоскости ХОУ задана своими координатами точка А. Указать, где она расположена (на какой оси или в каком координатном угле).
5. | Заданы три стороны треугольника a, b и с. Определить является ли этот треугольник прямоугольным, и какая сторона служит гипотенузой.
6. | Определить результат гадания на ромашке – «любит – не любит», взяв за исходное данное количество лепестков n.
7. | Заданы радиус круга R и сторона квадрата А. Определить, можно ли вписать квадрат в круг.
8. | Заданы два натуральных числа. Определить, является ли среднее арифметическое этих чисел целым числом.
9. | Заданы три положительных числа a, b и с. Определить являются ли они последовательно стоящими элементами арифметической прогрессии. Если являются, то определить разность прогрессии.
10. | Записать программу, которая на название фигуры (треугольник, квадрат, ромб, прямоугольник и т.п.) выводит формулу, по которой вычисляется площадь этой фигуры. В программе использовать оператор CASE.
11. | Записать программу, которая на ввод времени суток выводит соответствующее пожелание доброго утра, доброго дня, доброго вечера и спокойной ночи.
12. | Вычислить значение функции по формуле
13. | Определить принадлежит ли некоторая точка М с произвольными координатами х,y закрашенной области.
14. | Определить принадлежит ли некоторая точка М с произвольными координатами х,y закрашенной области. Уравнение прямой
15. | Определить принадлежит ли некоторая точка М с произвольными координатами х,y закрашенной области. Уравнение параболы
16. | Определить принадлежит ли некоторая точка М с произвольными координатами х,y закрашенной области.
17. | Записать программу, которая на ввод значения аргумента выдает значение функции, заданной графиком.
18. | Записать программу, которая на ввод значения аргумента выдает значение функции, заданной графиком.
19. | Записать программу, которая на ввод значения аргумента выдает значение функции, заданной графиком.
20. | Записать программу, которая на ввод значения аргумента выдает значение функции, заданной графиком.

Задания к лабораторной работе №2 третьего уровня

Организовать разветвляющийся процесс для решения следующих задач.

Вариант задания | Формулировка задачи
1. | Пройдет ли кирпич со сторонами x, y, z сквозь прямоугольное отверстие со сторонами r и s. Стороны отверстия должны быть параллельны граням кирпича.
2. | Можно ли коробку размером a ´ b ´ c упаковать в посылку размером r ´ s ´ t? «Углом» укладывать нельзя.
3. | Можно ли из круглой заготовки радиуса r вырезать две прямоугольные пластинки с размерами a ´ b и c ´ d?
4. | Лежит ли точка M(xm, ym) внутри треугольника, заданного координатами своих вершин A(xA, yA), B(xB, yB), C(xC, yC)?
5. | Путник двигался t1 часов со скоростью v1, а затем t2 часов – со скоростью v2 и t3 часов – со скоростью v3. За какое время он одолел первую половину пути, после чего запланировал привал?
6. | Проверить лежит ли окружность [image] целиком внутри окружности [image] и наоборот.
7. | Можно ли на прямоугольном участке застройки размером a на b метров разместить два дома размером p на q и r на s метров? Дома можно располагать только параллельно сторонам участка.
8. | Дано число x. Выести в порядке возрастания числа: sin x, cos x, ln x. Если при каком либо x некоторые из выражений не имеют смысла, вывести сообщение об этом и сравнивать значения только тех, которые имеют смысл.
9. | Даны три положительных числа. Определить, можно ли построить треугольник с длинами сторон, равным этим числам. Если можно, то ответить на вопрос, является ли он остроугольным.
10. | По заданным трем числам определить, является ли сумма каких-либо из них положительной.
11. | Даны действительные числа a, b, c. Удвоить эти числа, если a < b <c, и заменить их абсолютными значениями, если это не так.
12. | Осуществить перевод величин из радианной меры в градусную и наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие.
13. | Определить будут ли прямые A1x+B1y+C1 и A2x+B2y+C2 перпендикулярны. Если нет, то найти угол между ними.
14. | Известно, что из четырех чисел a1, a2, a3 и a4 одно отлично от трех других, равных между собой; присвоить номер этого числа переменной n.
15. | Даны три точки A(x1,y1), B(x2,y2) и C(x3,y3). Определить, будут ли они расположены на одной прямой. Если нет, то вычислить угол Ð ABC.
16. | Написать программу решения уравнения ax3+bx=0 для произвольных a,b.
17. | Даны три положительных числа a, b, c. Проверить, могут ли они быть длинами сторон треугольника. Если да, то вычислить его площадь.
18. | В доме M этажей и всего один подъезд; на каждом этаже по 3 квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры N. На каком этаже остановится лифт?
19. | Написать программу решения системы линейных уравнений
20. | Проверить, не приводит ли к переполнению суммирование двух целых чисел A и B (т.е. к результату большему, чем 32767). Если переполнение, сообщить об этом, если нет – вывести сумму.


tasks_1

Лабораторная работа №2: Задания к лабораторной работе №2 первого уровня

начало

назад

вперед

конец

вопросы

задания

В следующих задачах организовать выполнение алгоритма следующим образом: выбор вычисления по той или иной формуле - с помощью элемента управления переключатель, форматный или бесформатный вывод - с помощью элемента управления флажок.

Вариант задания

Формулировка задачи

Вычислить площадь и периметр прямоугольника, если задана длина одной стороны (a) и коэффициент n (%), позволяющий вычислить длину второй стороны (b=n*a).

Вычислить периметр и площадь прямоугольного треугольника по заданным длинам двух катетов a и b.

Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.

Вычислить площади геометрических фигур: прямоугольника и треугольника по заданным сторонам.

Вычислить площади геометрических фигур: трапеции и круга.

По известному радиусу вычислить объем и площадь поверхности шара.

Заданы координаты трех вершин треугольника. Найти его периметр и площадь.

Даны два числа. Найти среднее арифметическое кубов этих чисел и среднее геометрическое модулей этих чисел.

Даны два числа. Вычислить их сумму, разность, произведение и частное.

Дана сторона равностороннего треугольника. Найти площадь этого треугольника, его высоту, радиусы вписанной и описанной окружностей.

Вычислить объем и площадь полной поверхности цилиндра, если известны высота и радиус основания.

Заданы стороны прямоугольника. Определить его периметр, площадь и длину диагонали.

Заданы длина, ширина и высота параллелепипеда. Определить его объем и площадь поверхности.

Для двух целых чисел А и В определить сумму S, разность R и среднее арифметическое SR.

Переменной А присвоить ее значение, увеличенное в N раз, 2N раз, 3N раз.

Поменяйте между собой значения переменных А и В, воспользовавшись третьей переменной С, без использования третьей переменной.

В зависимости от названия реки, выдать сообщение о ее длине. В зависимости от названия горы, выдать сообщение о ее высоте.

В зависимости от дня недели, выдать сообщение о его номере. В зависимости от номера месяца, выдать его название.

Напечатать числа a, b, c в порядке возрастания, в порядке убывания.

Найти количество отрицательных чисел среди a, b, c и абсолютное значение суммы этих чисел.


tasks_2

Лабораторная работа №2: Задания к лабораторной работе №2 второго уровня

начало

назад

вперед

конец

вопросы

задания

Организовать разветвляющийся процесс для решения следующих задач.

Вариант задания | Формулировка задачи
1. | Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвёртую степень – отрицательные.
2. | Даны две точки А(х1, у1) и В(х2, у2). Составить алгоритм, определяющий, которая из точек находится ближе к началу координат
3. | Даны действительные числа х и у, не равные друг другу. Меньшее из этих двух чисел заменить половиной их суммы, а большее – их удвоенным произведением.
4. | На плоскости ХОУ задана своими координатами точка А. Указать, где она расположена (на какой оси или в каком координатном угле).
5. | Заданы три стороны треугольника a, b и с. Определить является ли этот треугольник прямоугольным, и какая сторона служит гипотенузой.
6. | Определить результат гадания на ромашке – «любит – не любит», взяв за исходное данное количество лепестков n.
7. | Заданы радиус круга R и сторона квадрата А. Определить, можно ли вписать квадрат в круг.
8. | Заданы два натуральных числа. Определить, является ли среднее арифметическое этих чисел целым числом.
9. | Заданы три положительных числа a, b и с. Определить являются ли они последовательно стоящими элементами арифметической прогрессии. Если являются, то определить разность прогрессии.
10. | Записать программу, которая на название фигуры (треугольник, квадрат, ромб, прямоугольник и т.п.) выводит формулу, по которой вычисляется площадь этой фигуры. В программе использовать оператор CASE.
11. | Записать программу, которая на ввод времени суток выводит соответствующее пожелание доброго утра, доброго дня, доброго вечера и спокойной ночи.
12. | Вычислить значение функции по формуле
13. | Определить принадлежит ли некоторая точка М с произвольными координатами х,y закрашенной области.
14. | Определить принадлежит ли некоторая точка М с произвольными координатами х,y закрашенной области. Уравнение прямой
15. | Определить принадлежит ли некоторая точка М с произвольными координатами х,y закрашенной области. Уравнение параболы
16. | Определить принадлежит ли некоторая точка М с произвольными координатами х,y закрашенной области.
17. | Записать программу, которая на ввод значения аргумента выдает значение функции, заданной графиком.
18. | Записать программу, которая на ввод значения аргумента выдает значение функции, заданной графиком.
19. | Записать программу, которая на ввод значения аргумента выдает значение функции, заданной графиком.
20. | Записать программу, которая на ввод значения аргумента выдает значение функции, заданной графиком.


tasks_3

Лабораторная работа №2: Задания к лабораторной работе №2 третьего уровня

начало

назад

вперед

конец

вопросы

задания

Организовать разветвляющийся процесс для решения следующих задач.

Вариант задания | Формулировка задачи
1. | Пройдет ли кирпич со сторонами x, y, z сквозь прямоугольное отверстие со сторонами r и s. Стороны отверстия должны быть параллельны граням кирпича.
2. | Можно ли коробку размером a ´ b ´ c упаковать в посылку размером r ´ s ´ t? «Углом» укладывать нельзя.
3. | Можно ли из круглой заготовки радиуса r вырезать две прямоугольные пластинки с размерами a ´ b и c ´ d?
4. | Лежит ли точка M(xm, ym) внутри треугольника, заданного координатами своих вершин A(xA, yA), B(xB, yB), C(xC, yC)?
5. | Путник двигался t1 часов со скоростью v1, а затем t2 часов – со скоростью v2 и t3 часов – со скоростью v3. За какое время он одолел первую половину пути, после чего запланировал привал?
6. | Проверить лежит ли окружность [image] целиком внутри окружности [image] и наоборот.
7. | Можно ли на прямоугольном участке застройки размером a на b метров разместить два дома размером p на q и r на s метров? Дома можно располагать только параллельно сторонам участка.
8. | Дано число x. Выести в порядке возрастания числа: sin x, cos x, ln x. Если при каком либо x некоторые из выражений не имеют смысла, вывести сообщение об этом и сравнивать значения только тех, которые имеют смысл.
9. | Даны три положительных числа. Определить, можно ли построить треугольник с длинами сторон, равным этим числам. Если можно, то ответить на вопрос, является ли он остроугольным.
10. | По заданным трем числам определить, является ли сумма каких-либо из них положительной.
11. | Даны действительные числа a, b, c. Удвоить эти числа, если a < b <c, и заменить их абсолютными значениями, если это не так.
12. | Осуществить перевод величин из радианной меры в градусную и наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие.
13. | Определить будут ли прямые A1x+B1y+C1 и A2x+B2y+C2 перпендикулярны. Если нет, то найти угол между ними.
14. | Известно, что из четырех чисел a1, a2, a3 и a4 одно отлично от трех других, равных между собой; присвоить номер этого числа переменной n.
15. | Даны три точки A(x1,y1), B(x2,y2) и C(x3,y3). Определить, будут ли они расположены на одной прямой. Если нет, то вычислить угол Ð ABC.
16. | Написать программу решения уравнения ax3+bx=0 для произвольных a,b.
17. | Даны три положительных числа a, b, c. Проверить, могут ли они быть длинами сторон треугольника. Если да, то вычислить его площадь.
18. | В доме M этажей и всего один подъезд; на каждом этаже по 3 квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры N. На каком этаже остановится лифт?
19. | Написать программу решения системы линейных уравнений
20. | Проверить, не приводит ли к переполнению суммирование двух целых чисел A и B (т.е. к результату большему, чем 32767). Если переполнение, сообщить об этом, если нет – вывести сумму.


th1

Лабораторная работа №2: Основные логические операции

конец

вопросы

задания

Операторы в программе-обработчике событий выполняются в той последовательности, в которой они записаны. Однако достаточно часто требуется изменить порядок выполнения операторов в зависимости от выполнения (или невыполнения) определенного условия. Существуют управляющие конструкции, предназначенные для управления порядком выполнения операторов. Основанием для принятия решений в управляющих операторах является истинность или ложность условного (логического) выражения.

Условные выражения — это такие выражения, которые возвращают одно из двух значений True (Истина) или False (Ложь). Простые логические выражения содержат операции отношения (операции сравнения): = (равно), > (больше), < (меньше), <> (не равно), >= (больше или равно), <= (меньше или равно). Сложные логические выражения строятся из простых логических выражений и логических операций, примененных к ним.

Основные логические операции

В приведенной таблице A и B – логические выражения

№

Операция

Обозначение

Истолкование

1

Отрицание (инверсия)

not A

Не А;
Неверно, что А

2

Конъюнкция (логическое произведение, логическое И)

А and В

А и В;
А, но В;
А, а В;
как А, так и В;
А вместе с В;
А в то время, как В

3

Дизъюнкция (логическое сложение, логическое ИЛИ)

А or В

А или В;
А или В или оба

4

Дизъюнкция (исключающее ИЛИ)

А xor В

А либо В;
А или В, но не оба

Приоритеты выполнения логических операций в логических выражениях:

  1. Отрицание (not)
  2. Логическое произведение (and)
  3. Логическое сложение (or), исключающее или (xor)

Скобки меняют порядок выполнения операций.

Таблица истинности для основных логических операций

А | В | Not A | A and B | A or B | A xor B
False | False | True | False | False | False
False | True | True | False | True | True
True | False | False | False | True | True
True | True | False | True | True | False


th2

Лабораторная работа №2: Условные операторы. Оператор условия If

начало

назад

вперед

конец

вопросы

задания

Условные операторы предназначены для выбора на исполнение одного из возможных действий (операторов) в зависимости от некоторого условия, при этом одно из действий может отсутствовать.

Выбор действия в зависимости от выполнения условия может быть реализован при помощи оператора IF.

Оператор условия If

Различают два типа условных операторов: If…Then и If…Then…Else.

Конструкция If…Then применяется, когда необходимо выполнить определенные действия только в том случае, если значение некоторого условия равно «истина».

Синтаксис оператора If…Then

If <условие> Then < Инструкция для обработки истинного условия >

Вначале вычисляется значение условия (выражения логического типа), и если значение условия равно «истина» выполняется инструкция следующая за словом Then.

Если в результате выполнения условного оператора должно выполняться 2, 3 или более инструкций, то необходимо использовать составной оператор.

Синтаксис составного оператора

Пару Begin…End часто называют операторными скобками и в программе для наглядности записывают на одном уровне (End под соответствующим ему Begin). Внутри одного составного оператора может находиться другой составной оператор.

Синтаксис оператора If…Then…Else:

If условие Then
<Инструкция для обработки истинного условия >
Else
< Инструкция для обработки ложного условия>

Оператор If…Then…Else выполняется следующим образом:

1. Вычисляется значение условия (выражения логического типа).

2. Если значение условия равно «истина», то выполняется инструкция следующая за словом Then. Если значение условия равно «ложь», то выполняется инструкция следующая за словом Else.

Примеры:

1. Программа поиска наибольшего из трех действительных чисел:

2. Программа проверки на равенство нулю делителя при выполнении операции вещественного деления:


th3

Лабораторная работа №2: Условные операторы. Оператор выбора Case

начало

назад

вперед

конец

вопросы

задания

Оператор Case позволяет реализовать множественный выбор. Переход организуется на одну их ветвей в зависимости от значения заданного выражения (селектора выбора).

Оператор Case существует также в двух вариантах:

Case k of

A1:  <инструкция1>;
A2:  <инструкция2>;
………
AN:  <инструкцияN>;

End;

и

Case k of

A1:  < инструкция 1>;
A2:  < инструкция 2>;
……………………….
AN:  < инструкция N>
Else
< инструкция, выполняемая в случае, если значение выражения
не попало ни в один из списков констант A1, A2, …,AN>

End;

Здесь

- k – выражение-селектор, от значения которого зависит дальнейший ход программы, может иметь только простой порядковый тип (целый, символьный, логический);

- Список констант (A1,…,AN) – константы, того же типа, что и селектор, выполняющие роль меток ветвей. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками.

Исполнение оператора начинается с вычисления выражения k, полученное значение сравнивается с константами (метками) и выполняется соответствующий оператор.

Например:

Для нахождения наибольшего из двух неравных действительных чисел, используется оператор

Следующий оператор case выполняет выбор варианта вычислений, в зависимости от того, какой из переключателей компоненты RadioGroup отмечен:

Если в результате выбора конкретного варианта должно выполняться 2, 3 или более инструкций, то необходимо использовать составной оператор.

Задание 1.
Откройте проект, реализующий ввод двух целых чисел, их вещественное деление и вывод результата на экран.
Дополните программу обработчика события проверкой делителя на равенство нулю. В случае равенства делителя нулю вместо выполнения деления в текстовом окне должно отображаться сообщение «На ноль делить нельзя!».
Проверьте работу модифицированной программы.
Сохраните внесенные в проект изменения, использовав кнопку Save All [image] панели инструментов Delphi.

Задание 2.
Измените программу таким образом, чтобы сообщение «На ноль делить нельзя!» в окне Edit3 выводилось красным цветом, а ширина окна изменялась, так, чтобы отображался весь текст сообщения.
Чтобы цвет шрифта и размер окна восстанавливался при вводе правильных данных, перед оператором if..then..else задайте свойства текстового окна: цвет шрифта – черный, и ширину окна 65 пикселей.
Сохраните внесенные в проект изменения.

Задание 3.
Измените программу таким образом, чтобы сообщение «На ноль делить нельзя!» выводилось в отдельном окне сообщения.
Для этого используйте вызов процедуры ShowMessage(‘На ноль делить нельзя!’).
Сохраните текст модуля под новым именем в той же папке, используя команду меню File→ Save As.
Сохраните измененный проект под новым именем в той же папке, используя команду меню File→ Save As.


th4

Лабораторная работа №2: Краткая характеристика некоторых компонентов, наиболее часто используемых в примерах для построения управляющих конструкций

начало

назад

вперед

конец

вопросы

задания

Компонент RadioGroup (группа переключателей) [image]. Позволяет отображать поля с ограниченным множеством значений. Относится к группе Standard.

Основные свойства компонента RadioGroup

Caption | Задает название группы переключателей.
Items | Определяется количество переключателей в группе и надписи около них. Надписи задаются в окне String List Editor.
ItemsIndex | Задает номер кнопки, выбранной по умолчанию. 0 – первая, -1 – ни одна кнопка не выбрана.

Пример использования в программе

{выбор арифметического действия по номеру отмеченной кнопки}

Компонент CheckBox (кнопка с независимой фиксацией - флажок Windows) [image]. Позволяет пользователю выбрать/отменить определенную опцию. Состояние кнопки содержится в свойстве Checked. Относится к группе Standard.

Основные свойства компонента CheckBox

Caption | Задает текст, сопровождающий кнопку.
AllowGrayed | Задает наличие у кнопки третьего состояния. Если значение этого свойства False, то кнопка может находится в двух состояниях – включенном или выключенном. Если значение свойства равно True, то добавляется третье состояние, когда кнопка неактивна.
Checked | Возвращает или задает, наличие галочки флажка. True – кнопка включена, False - выключена.

Пример использования в программе

{проверка наличия галочки у флажка, если есть – вывод форматный, нет - бесформатный}

Задание 4.
Создайте приложение (Калькулятор), обеспечивающее ввод двух целых чисел и выполнение над ними арифметических операций: сложения, вычитания, умножения и вещественного деления. Для выбора операции используйте переключатели, вывод сообщения об ошибке при вводе делителя, равного нулю, выполните в отдельном окне сообщений.

Сохраните проект.

Задание 5.
Добавьте в приложение компонент, обеспечивающий возможность форматного или бесформатного вывода результата.
Сохраните изменения в проекте.

Задание 6.
Выполните индивидуальное задание 1 уровня.
Сохраните проект.

Задание 7.
Выполните индивидуальное задание 2 уровня.
Сохраните проект.

Задание 8.
Выполните индивидуальное задание 3 уровня.
Сохраните проект.


Home Page

Лабораторная работа №3: Управляющие структуры. Программирование алгоритмов циклической структуры

начало

назад

вперед

конец

вопросы

задания

Темы:

Циклические структуры

Циклы с параметром

Итерационные циклы (циклы с условием)

Краткая характеристика некоторых компонентов, наиболее часто используемых в примерах при построении циклических конструкций

Использование рекуррентной формулы для вычисления суммы ряда

Процедуры и функции пользователя

Рекурсивные процедуры и функции

Задания первого уровня

Задания второго уровня

Задания третьего уровня

Контрольные вопросы и задания


question

Лабораторная работа №3: Контрольные вопросы и задания

конец

вопросы

задания

1. Каково назначение операторов цикла?

2. Какие операторы цикла вы знаете?

3. Когда используется цикл c параметром For (ДЛЯ)?

4. Когда используются циклы c предусловием или постусловием?

5. Как изменяется управляющая переменная в цикле For?

6. Когда в цикле применяется составной оператор?

7. Когда выполняется тело оператора цикла с предусловием While (ПОКА)?

8. Когда выполняется тело оператора цикла Repeat с постусловием (ДО)?

9. Когда осуществляется выход из оператора Repeat?

10. Когда осуществляется выход из оператора While?

11. Чем отличаются циклы While и Repeat?

12. Что представляет из себя объект BitBtn?

13. Для чего служит управляющий элемент Image?

14. Какие форматы поддерживает Image?

15. Каково назначение свойства Stretch?

16. Для чего используется объект Memo?

17. Как используется свойство Text компоненты Memo?

18. Для чего необходимы коды ASCII-таблицы 13 и 10?

19. Для чего используется свойство Lines компоненты Memo?

20. Как заполняется свойство Lines компоненты Memo при проектировании проекта?

21. Как заполняется свойство Lines компоненты Memo при выполнении проекта?

22. Что такое подпрограмма?

23. Что такое функция и процедура?

24. Опишите различия между функцией и процедурой.

25. В каком разделе описываются процедуры и функции?

26. Что такое формальные параметры?

27. Что такое фактические параметры?

28. В чем разница между параметрами-значениями и параметрами-переменными?

29. Как осуществляется обращение к функциям и переменным?


tz

Лабораторная работа №3: Индивидуальные задания

конец

вопросы

задания

Задания первого уровня

Табулирование функции

Вариант задания

Функция

Границы отрезка и шаг

1.

[2,3] 0,1

2.

[0,2] 0,2

3.

[0,4;1] 0,05

4.

[1;3] 0,2

5.

[1;2] 0,1

6.

[2;4] 0,2

7.

[0;1] 0,1

8.

[0;0,8] 0,05

9.

[1;2] 0,1

10.

[0;0,85] 0,05

11.

[0,5;1] 0,05

12.

[1;3] 0,2

13.

[1;3] 0,2

14.

[0;1] 0,1

15.

[1;2] 0,1

Вычисление суммы ряда

По заданной формуле члена последовательности с номером k составить две программы:

- программу вычисления суммы первых n членов последовательности (k=1,2,3..,n);

- программу вычисления суммы всех членов последовательности, не меньших заданного числа e.

Вариант задания | Член послед. | Вариант задания | Член послед. | Вариант задания | Член послед.
1. |  | 6. |  | 11. |
2. |  | 7. |  | 12. |
3. |  | 8. |  | 13. |
4. |  | 9. |  | 14. |
5. |  | 10. |  | 15. |

Арифметические задачи

1. Определить сумму цифр введенного числа a (a<1000).

2. Определить сумму чисел от 3 до 99 кратных числу 3.

3. Вывести на экран таблицу квадратов целых чисел от 1 до 10.

4. Напечатать таблицы температур по Цельсию от 0 до 100 градусов с дискретностью в один градус и их эквивалентов по шкале Фаренгейта, используя для перевода формулу [image] .

5. Вывести в столбец произведения чисел а = 143, b = 777 и числа с, последовательно принимающего значения 1, 2, 3, ... 9.

6. Получить произведения числа а = 12345689 на числа 9, 18, 27, ... 81.

7. Произвести суммирование натуральных чисел 1, 2, 3,..., пока их сумма s не станет равной или превысит величину h. Вывести на экран последнее слагаемое и значение суммы.

8. Сколько чисел последовательности 2, 4, 6, 8, ... нужно взять, чтобы их сумма превысила 1000? Вывести величину последнего слагаемого и суммы.

9. Определить количество цифр в натуральном числе N.

10. Вычислить факториал натурального числа N.

11. Определить произведение цифр натурального числа N.

12. Найти сумму всех четных натуральных чисел от 1 до 100.

13. Найти сумму первой и последней цифры натурального числа N.

14. Дано натуральное число. Верно ли, что оно начинается и заканчивается одной и той же цифрой.

15. Дано натуральное число. Верно ли, что в данном числе нет данной цифры А. А задается.

16. Дано натуральное число. Верно ли, что оно заканчивается нечетной цифрой.

17. Дано натуральное число. Верно ли, что в данном числе цифра А встречается более двух раз. А задается.

18. Дано натуральное число. Верно ли, что в данном числе сумма цифр больше А, а само число делится на А. А задается.

19. Дано натуральное число. Верно ли, что число принадлежит промежутку от А до В и кратно 3, 4 и 5. А и В задаются.

20. Сколько раз первая цифра встречается в данном числе.

Задания второго уровня

Табулирование функции

Вариант задания

Функция

Исходные данные

Диапазон и шаг изменения аргумента

-

Вычисление суммы ряда

Составить две программы:

- программу вычисления суммы первых n членов последовательности (k=1,2,3..,n);

- программу вычисления суммы всех членов последовательности, не меньших заданного числа e.

При вычислении факториала использовать рекурсивную подпрограмму-функцию.

Вар зад | Ряд | Вар зад | Ряд | Вар зад | Ряд
1. |  | 1. |  | 2. |
2. |  | 3. |  | 4. |
3. |  | 5. |  | 6. |
4. |  | 7. |  | 8. |
5. |  | 9. |  | 10. |

Арифметические задачи

1. В переменную последовательно вводятся числа. Окончание ввода либо по желанию пользователя, либо когда сумма отрицательных чисел превысит –1000. Определить среднее арифметическое отрицательных чисел.

2. В переменную последовательно вводятся десять чисел. Определить среднее арифметическое отрицательных чисел.

3. В простую переменную последовательно вводятся N вещественных чисел. Вычислить максимальное значение.

4. В простую переменную последовательно вводятся N чисел. Сколько чисел больше своих соседей слева?

5. В простую переменную последовательно вводятся N чисел. Все ли числа меньше заданного числа К?

6. Найти наибольшую и наименьшую цифры в записи данного натурального числа.

7. Дано натуральное число N £ 99. Дописать к нему цифру К в конец и начало.

8. При каком натуральном числе N произведение предшествующего числа и числа, следующего за N, равно 2208?

9. Существуют ли натуральные числа a < 100, которые обладают следующими свойствами: а) a mod 3 = 1, б) a mod 4 = 2, в) a mod 5 = 3, г) a mod 6 = 4. Сколько их?

10. Найти все трехзначные числа, сумма цифр которых равна А, а само число делится на В. А и В задаются.

11. Найти все четырехзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27.

12. Найти все четырехзначные числа, в которых есть две одинаковые цифры.

13. Найти количество трехзначных чисел, сумма цифр которых равна А, а само число заканчивается цифрой В. А и В задаются.

14. Найти все двузначные числа, которые при умножении на 2 заканчиваются на 8, а при умножении на 3 – на 4.

15. Найти количество делителей натурального числа. Сколько из них четных?

16. Найти количество делителей натурального числа, больших К. К задается.

17. Найти все натуральные числа а, в и с из интервала от 1 до 20, для которых выполняется равенство а2 + в2 = с2.

18. Найти сумму нечетных делителей натурального числа.

Задания третьего уровня

Табулирование функции и суммы функционального ряда

Протабулировать

1. функцию y на отрезке [а, b] с шагом h.

2. сумму S функционального ряда разложения этой функции на отрезке [а, b] с шагом h.

Сравнить значения заданной функции и ее разложения.

Вид вычисляемой функции задать с помощью подпрограммы-функции. Функциональный ряд S вычисляется с точностью до e по соответствующей рекуррентной формуле. Возможная форма проекта:

Вар зад | Сумма | Диапазон изменения аргумента | e | Функция y
1. |  |  |  |
2. |  |  |  |
3. |  |  |  |
4. |  |  |  |
5. |  |  |  |
6. |  |  |  |
7. |  |  |  |
8. |  |  |  |
9. |  |  |  |
10. |  |  |  |
11. |  |  |  |
12. |  |  |  |
13. |  |  |  |
14. |  |  |  |
15. |  |  |  |

Арифметические задачи

1. В простую переменную последовательно вводятся 10 чисел. Определить максимальное значение и количество чисел, равных максимуму.

2. В простую переменную последовательно вводятся N положительных чисел. Определить минимальное значение и порядковый номер последнего числа, равного этому значению.

3. В простую переменную последовательно вводятся числа. Окончание ввода 0. Сколько чисел больше своих соседей слева и справа?

4. В простую переменную последовательно вводятся N чисел, отличных от нуля. Положительные или отрицательные числа завершают последовательность и сколько их?

5. Вводится положительное целое число B < 10000. Является ли оно палиндромом? Палиндром – это строка или число, которое читается как слева направо, так и справа налево?

6. Найти все простые числа, лежащие в заданном диапазоне. Простые числа – это числа больше 1 и делящиеся нацело только на 1 и на само себя.

7. Найти все делители натурального числа N.

8. Проверить, все ли цифры данного натурального числа N различны.

9. Поменять порядок следования цифр в натуральном числе N на обратный.

10. Определить все двузначные числа, сумма квадратов цифр которых кратны числу 15.

11. Найти совершенные числа меньшие заданного числа N. Совершенные числа – это числа, которые равны сумм всех своих собственных делителей, включая 1 (6 = 1+2+3).

12. Проверить утверждение, что разность любого натурального числа и суммы его цифр кратна 9, для всех чисел, лежащих между заданными m и n.

13. Дано натуральное число. Приписать к нему такое же число.

14. Из данного натурального числа удалить все цифры А. А задается.

15. Найти все симметричные натуральные числа (палиндромы) из промежутка от А до В. А и В задаются.

16. Найти количество различных цифр данного натурального числа.

17. Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N . N задается.

18. Найти сумму целых чисел из промежутка от 1 до 200, у которых ровно 5 делителей.


tasks_1

Лабораторная работа №3: Задания первого уровня

конец

вопросы

задания

Табулирование функции

Вариант задания

Функция

Границы отрезка и шаг

1.

[2,3] 0,1

2.

[0,2] 0,2

3.

[0,4;1] 0,05

4.

[1;3] 0,2

5.

[1;2] 0,1

6.

[2;4] 0,2

7.

[0;1] 0,1

8.

[0;0,8] 0,05

9.

[1;2] 0,1

10.

[0;0,85] 0,05

11.

[0,5;1] 0,05

12.

[1;3] 0,2

13.

[1;3] 0,2

14.

[0;1] 0,1

15.

[1;2] 0,1

Вычисление суммы ряда

По заданной формуле члена последовательности с номером k составить две программы:

- программу вычисления суммы первых n членов последовательности (k=1,2,3..,n);

- программу вычисления суммы всех членов последовательности, не меньших заданного числа e.

Вариант задания | Член послед. | Вариант задания | Член послед. | Вариант задания | Член послед.
1. |  | 6. |  | 11. |
2. |  | 7. |  | 12. |
3. |  | 8. |  | 13. |
4. |  | 9. |  | 14. |
5. |  | 10. |  | 15. |

Арифметические задачи

1. Определить сумму цифр введенного числа a (a<1000).

2. Определить сумму чисел от 3 до 99 кратных числу 3.

3. Вывести на экран таблицу квадратов целых чисел от 1 до 10.

4. Напечатать таблицы температур по Цельсию от 0 до 100 градусов с дискретностью в один градус и их эквивалентов по шкале Фаренгейта, используя для перевода формулу [image] .

5. Вывести в столбец произведения чисел а = 143, b = 777 и числа с, последовательно принимающего значения 1, 2, 3, ... 9.

6. Получить произведения числа а = 12345689 на числа 9, 18, 27, ... 81.

7. Произвести суммирование натуральных чисел 1, 2, 3,..., пока их сумма s не станет равной или превысит величину h. Вывести на экран последнее слагаемое и значение суммы.

8. Сколько чисел последовательности 2, 4, 6, 8, ... нужно взять, чтобы их сумма превысила 1000? Вывести величину последнего слагаемого и суммы.

9. Определить количество цифр в натуральном числе N.

10. Вычислить факториал натурального числа N.

11. Определить произведение цифр натурального числа N.

12. Найти сумму всех четных натуральных чисел от 1 до 100.

13. Найти сумму первой и последней цифры натурального числа N.

14. Дано натуральное число. Верно ли, что оно начинается и заканчивается одной и той же цифрой.

15. Дано натуральное число. Верно ли, что в данном числе нет данной цифры А. А задается.

16. Дано натуральное число. Верно ли, что оно заканчивается нечетной цифрой.

17. Дано натуральное число. Верно ли, что в данном числе цифра А встречается более двух раз. А задается.

18. Дано натуральное число. Верно ли, что в данном числе сумма цифр больше А, а само число делится на А. А задается.

19. Дано натуральное число. Верно ли, что число принадлежит промежутку от А до В и кратно 3, 4 и 5. А и В задаются.

20. Сколько раз первая цифра встречается в данном числе.


tasks_2

Лабораторная работа №3: Задания второго уровня

конец

вопросы

задания

Табулирование функции

Вариант задания

Функция

Исходные данные

Диапазон и шаг изменения аргумента

-

Вычисление суммы ряда

Составить две программы:

- программу вычисления суммы первых n членов последовательности (k=1,2,3..,n);

- программу вычисления суммы всех членов последовательности, не меньших заданного числа e.

При вычислении факториала использовать рекурсивную подпрограмму-функцию.

Вар зад | Ряд | Вар зад | Ряд | Вар зад | Ряд
1. |  | 6. |  | 11. |
2. |  | 7. |  | 12. |
3. |  | 8. |  | 13. |
4. |  | 9. |  | 14. |
5. |  | 10. |  | 15. |

Арифметические задачи

1. В переменную последовательно вводятся числа. Окончание ввода либо по желанию пользователя, либо когда сумма отрицательных чисел превысит –1000. Определить среднее арифметическое отрицательных чисел.

2. В переменную последовательно вводятся десять чисел. Определить среднее арифметическое отрицательных чисел.

3. В простую переменную последовательно вводятся N вещественных чисел. Вычислить максимальное значение.

4. В простую переменную последовательно вводятся N чисел. Сколько чисел больше своих соседей слева?

5. В простую переменную последовательно вводятся N чисел. Все ли числа меньше заданного числа К?

6. Найти наибольшую и наименьшую цифры в записи данного натурального числа.

7. Дано натуральное число N £ 99. Дописать к нему цифру К в конец и начало.

8. При каком натуральном числе N произведение предшествующего числа и числа, следующего за N, равно 2208?

9. Существуют ли натуральные числа a < 100, которые обладают следующими свойствами: а) a mod 3 = 1, б) a mod 4 = 2, в) a mod 5 = 3, г) a mod 6 = 4. Сколько их?

10. Найти все трехзначные числа, сумма цифр которых равна А, а само число делится на В. А и В задаются.

11. Найти все четырехзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27.

12. Найти все четырехзначные числа, в которых есть две одинаковые цифры.

13. Найти количество трехзначных чисел, сумма цифр которых равна А, а само число заканчивается цифрой В. А и В задаются.

14. Найти все двузначные числа, которые при умножении на 2 заканчиваются на 8, а при умножении на 3 – на 4.

15. Найти количество делителей натурального числа. Сколько из них четных?

16. Найти количество делителей натурального числа, больших К. К задается.

17. Найти все натуральные числа а, в и с из интервала от 1 до 20, для которых выполняется равенство а2 + в2 = с2.

18. Найти сумму нечетных делителей натурального числа.


tasks_3

Лабораторная работа №3: Задания третьего уровня

конец

вопросы

задания

Табулирование функции и суммы функционального ряда

Протабулировать

1. функцию y на отрезке [а, b] с шагом h.

2. сумму S функционального ряда разложения этой функции на отрезке [а, b] с шагом h.

Сравнить значения заданной функции и ее разложения.

Вид вычисляемой функции задать с помощью подпрограммы-функции. Функциональный ряд S вычисляется с точностью до e по соответствующей рекуррентной формуле. Возможная форма проекта:

Вар зад | Сумма | Диапазон изменения аргумента | e | Функция y
1. |  |  |  |
2. |  |  |  |
3. |  |  |  |
4. |  |  |  |
5. |  |  |  |
6. |  |  |  |
7. |  |  |  |
8. |  |  |  |
9. |  |  |  |
10. |  |  |  |
11. |  |  |  |
12. |  |  |  |
13. |  |  |  |
14. |  |  |  |
15. |  |  |  |

Арифметические задачи

1. В простую переменную последовательно вводятся 10 чисел. Определить максимальное значение и количество чисел, равных максимуму.

2. В простую переменную последовательно вводятся N положительных чисел. Определить минимальное значение и порядковый номер последнего числа, равного этому значению.

3. В простую переменную последовательно вводятся числа. Окончание ввода 0. Сколько чисел больше своих соседей слева и справа?

4. В простую переменную последовательно вводятся N чисел, отличных от нуля. Положительные или отрицательные числа завершают последовательность и сколько их?

5. Вводится положительное целое число B < 10000. Является ли оно палиндромом? Палиндром – это строка или число, которое читается как слева направо, так и справа налево?

6. Найти все простые числа, лежащие в заданном диапазоне. Простые числа – это числа больше 1 и делящиеся нацело только на 1 и на само себя.

7. Найти все делители натурального числа N.

8. Проверить, все ли цифры данного натурального числа N различны.

9. Поменять порядок следования цифр в натуральном числе N на обратный.

10. Определить все двузначные числа, сумма квадратов цифр которых кратны числу 15.

11. Найти совершенные числа меньшие заданного числа N. Совершенные числа – это числа, которые равны сумм всех своих собственных делителей, включая 1 (6 = 1+2+3).

12. Проверить утверждение, что разность любого натурального числа и суммы его цифр кратна 9, для всех чисел, лежащих между заданными m и n.

13. Дано натуральное число. Приписать к нему такое же число.

14. Из данного натурального числа удалить все цифры А. А задается.

15. Найти все симметричные натуральные числа (палиндромы) из промежутка от А до В. А и В задаются.

16. Найти количество различных цифр данного натурального числа.

17. Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N . N задается.

18. Найти сумму целых чисел из промежутка от 1 до 200, у которых ровно 5 делителей.


th1

Лабораторная работа №3: Циклические структуры

конец

вопросы

задания

Циклические конструкции обеспечивают многократное выполнение одной и той же последовательности инструкций, которая называется телом цикла. Существуют два вида элементарных циклических структур:

- циклы с параметром;

- итерационные циклы или циклы с условием.

Циклы с параметром используют тогда, когда количество повторов тела цикла заранее известно. В языке Pascal циклы с параметром реализуются с помощью оператора For.

Итерационные циклы используются тогда, когда число повторений заранее неизвестно, но задано условие окончания цикла. Причем, если условие окончания цикла проверяется перед выполнением тела цикла, то такие циклические структуры называют итерационными циклами с предусловием (“Выполнять пока”), а если проверка условия происходит после выполнения тела цикла – итерационными циклами с постусловием (“Выполнять до тех пор пока не”).

На практике циклы с условием чаще всего используют в двух случаях:

  • Число повторений заранее неизвестно (например, цикл до достижения требуемой точности результата).
  • Число повторений заранее известно, но шаг параметра цикла не равен 1 (или –1).

В языке Pascal итерационные циклы с предусловием реализуются с помощью оператора While, а итерационные циклы с постусловием - с помощью оператора Repeat … Until.


th2

Лабораторная работа №3: Циклы с параметром

конец

вопросы

задания

Оператор FOR

Синтаксис оператора For:

Последовательность операторов, находящаяся между begin и end, будет выполнена (кон_зн_счетчика - нач_зн_счетчика_цикла + 1) раз. Если начальное значение счетчика превышает конечное значение счетчика, при шаге цикла равным 1, то последовательность операторов, находящаяся между begin и end ни разу не будет выполнена.

Примеры:

  1. Протабулировать функцию (найти значения функции) y=sin x на отрезке [a, b] с шагом h.

Программа, реализующая данный алгоритм имеет вид:

  2. Вычислить сумму конечного ряда [image] , т.е. сумму первых n членов последовательности [image] (k=1,2,3..,n).

Программа, реализующая данный алгоритм будет иметь вид:

Замечание. В том случае, если тело цикла состоит только из одной инструкции, нет смысла использовать составной оператор (операторные скобки Begin…End)


th3

Лабораторная работа №3: Итерационные циклы

конец

вопросы

задания

Операторы циклов с условием

Синтаксис цикла с предусловием While

- Инструкции, находящиеся между begin и end выполняются до тех пор, пока условие истинно. Если условие неверно при входе в цикл, инструкции ни разу не исполняются.

- Чтобы цикл завершился, необходимо, чтобы последовательность инструкций между begin и end изменяла значения переменных, входящих в выражение условие.

Пример. Подсчитать количество цифр в заданном целом числе.

Программа, реализующая данный алгоритм будет иметь вид:

Замечание. В том случае, если тело цикла состоит только из одной инструкции, нет смысла использовать составной оператор (операторные скобки Begin…End)

Синтаксис цикла с постусловием Repeat … Until

Работа оператора:

- выполняются инструкции, следующие после ключевого слова Repeat;

- вычисляется значение условия. Если условие ложно, то повторно выполняются инструкции цикла. Если условие истинно, то выполнение цикла прекращается.

Замечание. При использовании цикла с постусловием нет необходимости использовать операторные скобки.

Пример. Вычислить сумму бесконечного ряда [image] с заданной точностью Eps, (т.е. вычислить сумму всех членов последовательности [image] , не меньших заданного числа Eps).

Программа, реализующая данный алгоритм будет иметь вид:


th4

Лабораторная работа №3: Краткая характеристика некоторых компонентов, наиболее часто используемых в примерах при построении циклических конструкций

начало

назад

вперед

конец

вопросы

задания

Компонент Memo (многострочное окно редактирования) [image]. Используется для ввода, отображения и редактирования многострочных текстов. Относится к группе Standard.

Alignment | Задает режим выравнивания текста внутри Memo.
AutoSize | Задает необходимость изменения размера компонента при изменении размера шрифта.
BorderStyle | Задается стиль обрамления Memo.
Color | Задает цвет, которым изображается элемент Memo на экране.
Lines | Определяет текст, который будет выведен построчно в окне Memo при запуске программы. Текст задается в окне String List Editor
MaxLength | Позволяет ограничивать число вводимых пользователем символов.
ScrollBars | Задает наличие полос прокрутки.
Text | Используется, чтобы получить текст компонента Memo как одну строку. Значение этого свойства не отображается в окне Object Inspector, к нему можно обратиться только во время выполнения программы.

Пример использования в программе

1. Заполнение Memo с использованием свойства Text на примере табулирования функции.

2. Тот же пример, но Memo заполняется с использованием свойства Lines. Метод Add, примененный к Lines позволяет добавить строку в Memo. Оператор memo1.Lienes[0]:=’  x  |  y  ’; задает первую строку в Memo .

Компонент BitBtn (кнопка с изображением) [image]. Используется как обычная кнопка для инициирования некоторого события, но может содержать графическое изображение. Относится к группе Additional.

Caption | Задает текст надписи на кнопке.
Kind | Предлагает на выбор десять предопределенных типов кнопок
Glith | Предлагает создание собственного типа кнопки с помощью окна Picture Editor.

Пример использования в программе

Компонент Image (графический образ) [image]. Позволяет отображать рисунок, загруженный из графического файла. Относится к группе Additional.

Align | Задает режим выравнивания расположения объекта Image внутри формы.
Picture | Задает имя файла графического файла с рисунком с помощью окна Picture Editor.
Streth | Задает разрешение на автоматическое масштабирование рисунка относительно Image.

Пример использования в программе

Задание 1.
Протабулируйте функцию [image] на отрезке [0;1] с шагом 0,1.

Сохраните проект.

Задание 2.
Ряд задан общим членом последовательности [image] . Вычислите сумму первых n членов (k=1,2,..n).

Сохраните проект.

Задание 3.
Ряд задан общим членом последовательности [image] . Вычислите сумму членов последовательности, не меньших заданного числа е.

Сохраните проект.


th5

Лабораторная работа №3: Использование рекуррентной формулы

конец

вопросы

задания

Рекуррентной называется всякая формула, выражающая каждый член последовательности через предыдущие члены этой последовательности. Используется чаще всего в целях избавления от больших чисел при вычислении суммы членов последовательности.

Как правило, в этом случае рекуррентная формула имеет вид: , откуда, зная общий член последовательности, можно будет найти коэффициент С, на который нужно умножать каждый предыдущий член последовательности, чтобы найти следующий:

Пример. Вычислить сумму бесконечного ряда:

.

Найдем коэффициент C, разделив (k+1)-ое слагаемое на k–ое:

Таким образом, очередной член ряда можно вычислить по рекуррентной формуле:

.

Задание 4.
Найти сумму ряда

Функциональный ряд S вычисляется с точностью e, т.е. суммируются все члены ряда, значения которых больше e.. Значение х задается. Проверьте, что k+1 - й член функционального ряда, вычисляется по рекуррентной формуле:

., если |Uk| > e.

Данный ряд является разложением функции sin x. Вычислите разность между полученной суммой ряда и значением функции для заданного х.

Сохраните проект.


th6

Лабораторная работа №3: Процедуры и функции пользователя

конец

вопросы

задания

Если в программе возникает необходимость частого обращения к некоторой группе операторов, то рационально сгруппировать такую группу операторов в самостоятельный блок, к которому можно обращаться, указывая его имя. Такие самостоятельные программные блоки называются подпрограммами пользователя.

Передача данных из главной программы в подпрограмму и возврат результата выполнения осуществляется с помощью параметров. Различают формальные параметры – параметры, определенные в заголовке подпрограммы, и фактические параметры – выражения, задающие конкретные значения при обращении к подпрограмме.

Реализуют подпрограммы в виде процедур или функций, которые определяются в разделе описания функций и процедур.

Главное отличие функции от процедуры заключается в том, что результат работы функции – единственное значение, а результат работы процедуры – одно значение, несколько значений или ни одного (например, процедура, которая распечатывает полученный ранее результат в виде красивых таблиц). Кроме того, обращение к функции является разновидностью операнда, а вызов процедуры – разновидностью оператора.

Процедуры

Структура процедуры

Procedure <имя процедуры> (список формальных параметров);
 <Раздел описаний программного кода процедуры>
 Begin
  <Операторы тела процедуры>
 End;

Список формальных параметров может включать:

- параметры-значения или входные параметры, значения которых должны быть установлены до начала работы данной процедуры (определяют исходные данные для работы процедуры);

- параметры-переменные или выходные параметры, получающие свое конкретное значение в результате работы процедуры (определяют выходные данные процедуры). Перед перечислением параметров-переменных в списке формальных параметров должно стоять ключевое слово var.

- Каждый параметр имеет имя и тип, указанный через «:». Параметры отделяются друг от друга «;»

Обращение к процедуре осуществляется в основной программе путем задания ее имени и списка фактических параметров того же типа и количества, что и формальные.

Пример. Вычислить площадь четырехгранника, если даны длины его ребер. Использовать подпрограмму-процедуру.

Вычисление площади треугольника по формуле Герона оформлено с помощью процедуры.

Функции

Это подпрограммы, в результате которых вычисляется только одно значение, которое присваивается имени функции.

Структура функции

Function <имя функции>(список формальных параметров):<тип результата>;
 <Раздел описаний программного кода функции>
 Begin
  <Операторы тела функции>
  <Имя функции>:=<Вычисленное значение>
 End;

Список формальных параметров включает имена переменных со своими типами, с помощью которых определяются исходные данные необходимые для работы функции.

В разделе операторов должен присутствовать, по крайней мере, один оператор, присваивающий вычисленное значение имени функции. В точку вызова возвращается результат последнего такого присваивания. Если такого оператора нет, то значение функции не определено.

Обращение к функции осуществляется в основной программе путем задания ее имени и списка фактических параметров того же типа и количества, что и формальные.

Пример. Вычислить площадь четырехгранника, если даны длины его ребер с использованием функции. Использовать подпрограмму-функцию.

Вычисление площади треугольника по формуле Герона оформлено с помощью функции.

Задание 5.
Вычислить площадь, нарисованного многоугольника. Х – задается. Для вычисления площади каждого треугольника, использовать подпрограмму-функцию.

Сохраните проект.


th7

Лабораторная работа №3: Рекурсивные процедуры и функции

конец

вопросы

задания

Слово «рекурсия» происходит от латинского слова «recursio» - возвращение.

Если процедура (или функция) обращается сама к себе как к процедуре (или функции) непосредственно или через цепочку подпрограмм, то это называется рекурсией.

Для того, чтобы подобного типа программы не зацикливались (что очень реально), в первую очередь, необходимо обеспечить выход из рекурсии.

Пример. Вычислить факториал заданного числа с помощью подпрограммы-функции, использующей рекурсию.

Факториал заданного числа – это произведение натуральных чисел от 1 до заданного числа.

Например, n-факториал это

Задание 6.
Вычислить выражение c=m!n!/(m+n)!, m и n задаются. Для вычисления факториала использовать подпрограмму-функцию с рекурсией.

Сохраните проект.

Задание 7.
Выполните индивидуальное задание из предложенных задач первого уровня.

Сохраните проект.

Задание 8.
Выполните индивидуальное задание из предложенных задач второго уровня.

Сохраните проект.

Задание 9.
Выполните индивидуальное задание из предложенных задач третьего уровня.

Сохраните проект.


index

Лабораторная работа №4: Массивы. Одномерные массивы

конец

вопросы

задания

Темы:

Массивы

Линейные (одномерные) массивы

Типовые задачи на обработку одномерных массивов

Линейная сортировка массива

Уплотнение массива

Вставка элемента в массив

Изменение положения элементов на некотором отрезке

Кольцевой сдвиг элементов массива

Ошибки при использовании массивов

Задания первого уровня

Задания второго уровня

Задания третьего уровня

Контрольные вопросы и задания


question

Лабораторная работа №4: Контрольные вопросы и задания

конец

вопросы

задания

1. Что такое массив данных?

2. Как и в каком разделе программного кода описываются массивы?

3. Как определить местоположение элемента в массиве?

4. Что такое индекс? Каким требованиям он должен удовлетворять?

5. Как осуществляется доступ к элементам массива?

6. Что такое динамический массив?

7. Опишите отличия статических и динамических массивов. Каков порядок описания и применения динамических массивов?

8. Когда и для чего используется процедура SetLength?

9. Каково назначение компоненты GroupBox? Как задать надпись в этом компоненте?

10. Чем отличаются компоненты RadioGroup и GroupBox? Как задать список элементов в объекте RadioGroup?

11. С какой целью используется оператор with..do для обращения к элементам объекта?


tasks

Лабораторная работа №4: Индивидуальные задания

конец

вопросы

задания

Задания первого уровня

№ вар.

Задание

1.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,10]. Найти сумму элементов, имеющих нечетное значение.

2. Вывести индексы тех элементов, значения которых больше заданного числа А.

3. Определить, есть ли в данном массиве положительные элементы, кратные заданному числу К.

2.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-15,15]. Найти произведение элементов, имеющих четное значение.

2. Вывести индексы тех элементов, значения которых по модулю меньше заданного числа А.

3. Определить, есть ли в данном массиве положительные элементы, делящиеся на заданное число k с остатком 2.

3.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,20]. Найти сумму элементов, имеющих нечетные индексы.

2. Подсчитать количество элементов массива, значения которых больше заданного числа А и кратных 5.

3. Найти номер первого отрицательного элемента, делящегося на 5 с остатком 2.

4.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму четных элементов.

2. Подсчитать количество элементов массива, значения которых состоят из двух цифр.

3. Найти номер первого положительного элемента, делящегося на 5 с остатком 2.

5.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,100]. Найти сумму положительных элементов, значения которых меньше 10.

2. Вывести индексы тех элементов, значения которых кратны 3 и 5.

3. Определить, есть ли пара соседних элементов с суммой, равной заданному числу.

6.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму отрицательных элементов, значения которых кратно10.

2. Вывести индексы тех элементов, значения которых кратны 5 и 10.

3. Определить, есть ли пара соседних элементов с произведением, равным заданному числу.

7.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму четных отрицательных элементов.

2. Вывести индексы тех элементов, значения которых кратны 3 и 6.

3. Определить, есть ли пара соседних элементов с суммой, равной заданному числу.

8.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-20,40]. Найти удвоенную сумму положительных элементов.

2. Вывести индексы тех элементов, значения которых больше значения предыдущего элемента (начиная со второго).

3. Определить, есть ли две пары соседних элементов с одинаковыми знаками.

9.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-40,40]. Найти сумму элементов, значения которых по модулю меньше 10.

2. Вывести индексы тех элементов, значения которых больше значения последующего элемента.

3. Определить, есть ли две пары соседних элементов с разными знаками

10.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,200]. Найти сумму отрицательных элементов.

2. Найти количество тех элементов, значения которых положительны и не превосходят заданного числа А.

3. Найти номер последней пары соседних элементов с разными знаками.

11.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,200]. Найти сумму четных элементов, значения которых больше заданного числа.

2. Найти количество тех элементов, значения которых отрицательны и по модулю не превосходят заданного числа А.

3. Найти номер первой пары соседних элементов с разными знаками.

12.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,20]. Найти произведение четных элементов, значения которых по модулю меньше 5.

2. Найти количество тех элементов, значения которых нечетны и по модулю превосходят заданное число А.

3. Найти номер последней пары соседних элементов, сумма которых больше заданного числа.

13.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,10]. Найти сумму элементов, значения которых кратны 3 и5.

2. Найти количество тех элементов, значения которых положительны и по модулю не превосходят заданное число А.

3. Найти номер первой пары соседних элементов, сумма которых меньше заданного числа.

14.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,100]. Найти сумму элементов, значения которых состоят из одной цифры.

2. Найти количество тех элементов, значения которых положительны и кратны 3 и 5.

3. Найти номер последней пары соседних элементов с одинаковыми знаками, произведение которых меньше заданного числа.

15.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму положительных элементов, значения которых состоят из двух цифр.

2. Найти количество тех элементов, значения которых по модулю превосходят 100 и кратны 5 и 10.

3. Найти номер первой пары соседних элементов с разными знаками, сумма которых меньше заданного числа.

Задания второго уровня

№ вар.

Задание

1.

1. Заменить первый элемент массива, кратный 5, нулем.

2. Заменить элементы массива с нечетными номерами на квадраты их номеров.

3. Из элементов массива D сформировать массив A той же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = Di2, а если нечетный, то по формуле Ai = Di / i.

2.

1. Заменить последний элемент массива, кратный 3, нулем.

2. Заменить элементы массива с четными номерами на произведение значения этого элемента и его номера.

3. Из элементов массива D сформировать массив A той же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = i*Di2, а если нечетный, то по формуле Ai = Di / (i-1)

3.

1. Заменить последний положительный элемент массива на второй элемент массива.

2. Разделить все элементы массива с четными номерами на первый элемент (первый элемент отличен от 0).

3. Из элементов массива D сформировать массив A той же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = Di2, если нечетный, то по формуле Ai = 2Di.

4.

1. Заменить последний отрицательный элемент массива на модуль первого элемента массива.

2. Разделить все элементы массива с нечетными номерами на последний элемент (последний элемент отличен от 0).

3. Из элементов массива D сформировать массив A той же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = Di2+ i, а если нечетный, то по формуле Ai = i*Di

5.

1. Заменить минимальный по модулю отрицательный элемент массива первым элементом.

2. Заменить последние k элементов массива на противоположные по знаку.

3. Из элементов массива C сформировать массив A той же размерности по правилу: если номер i элемента четный, то Ai=(i-1)*Ci, если нечетный, то Ai=2*i*Ci.

6.

1. Заменить максимальный по модулю отрицательный элемент массива нулем.

2. Заменить первые k элементов массива на противоположные по знаку.

3. Из элементов массива C сформировать массив A той же размерности по правилу: если номер i элемента четный, то Ai=Ci2, если нечетный, то Ai=2Ci.

7.

1. Заменить минимальный по модулю положительный элемент массива нулем.

2. Заменить элементы массива с k1-го по k2-й на те же элементы в обратном порядке.

3. Из элементов массива D сформировать массив A той же размерности по правилу: первые 10 элементов находятся по формуле Ai = Di+i, остальные по формуле Ai = Di-i.

8.

1. Заменить минимальный по модулю положительный элемент массива последним элементом.

2. Заменить первые k элементов массива на те же элементы в обратном порядке.

3. Из элементов массива D сформировать массив A той же размерности по правилу: все четные элементы находятся по формуле Ai = Di+i, , а нечетные по формуле Ai = Di-i.

9.

1. Заменить максимальный элемент массива на противоположный по знаку.

2. Заменить нулями элементы массива между минимальным и максимальным, кроме их самих.

3. Из элементов массива D сформировать массив A той же размерности по правилу: элементы с 3-го по 12-й находятся по формуле Ai = -Di2, остальные по формуле Ai = Di-1.

10.

1. Заменить минимальный элемент массива на средний (количество элементов – нечетно).

2. Заменить нулями элементы массива между минимальным по модулю и максимальным по модулю, кроме их самих.

3. Из элементов массива D сформировать массив A той же размерности по правилу: элементы с первого по k-ый находятся по формуле Ai = -Di2, остальные по формуле Ai = Di-1.

11.

1. Заменить первый отрицательный элемент массива нулем.

2. Умножить все элементы массива, кратные 3, на третий элемент массива.

3. Из элементов массива P сформировать массив M той же размерности по правилу: если номер четный, то Mi=i*Pi , если нечетный, то Mi=-Pi.

12.

1. Заменить первый отрицательный элемент массива на первый положительный.

2. Умножить все четные положительные элементы на последний элемент массива.

3. Из элементов массива P сформировать массив M той же размерности по правилу: если элемент четный, то Mi=i*Pi , если нечетный, то Mi=-Pi.

13.

1. Заменить последний отрицательный элемент массива предпоследним элементом масива.

2. Умножить все элементы массива, кратные 3, на его номер.

3. Из элементов массива P сформировать массив M той же размерности по правилу: каждый третий элемент по формуле Mi=i*Pi , а все остальные по формуле Mi=-Pi*(i+1).

14.

1. Заменить предпоследний элемент массива на максимальный по модулю.

2. Умножить все нечетные элементы массива, кратные 3, на его номер.

3. Из элементов массива P сформировать массив M той же размерности по правилу: первый и последний элементы равны нулю, каждый четвертый элемент по формуле Mi=4*abs(Pi ), а все остальные по формуле Mi=-Pi*(i+1).

15.

1. Заменить второй элемент массива на максимальный среди отрицательных.

2. Заменить элементы массива между минимальным и максимальным на те же элементы в обратном порядке

3. Из элементов массива P сформировать массив M той же размерности по правилу: первый и последний элементы равны нулю, а все остальные по формуле Mi=-Pi*(i+1).

Задания третьего уровня

№ вар.

Задание

1.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-40,30]. Удалить из него все элементы, которые состоят из одинаковых цифр (включая однозначные числа).

2. Вставить число К перед всеми элементами, в которых есть цифра 1.

3. Переставить первые три и последние три элемента местами, сохраняя порядок их следования.

2.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,60]. Удалить из него все элементы, в которых последняя цифра четная, а само число делится на нее.

2. Вставить элемент со значением К до и после всех элементов, заканчивающихся на цифру К.

3. Переставить элементы следующим образом: a[1], a[12], a[2], a[11], a[3], a[10],a[4], a[9], a[5], a[8], a[6], a[7].

3.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-35,75]. Удалить из него все элементы, первая цифра которых четная.

2. Вставить число К1 после всех элементов, больших заданного числа, а число К2 – перед всеми элементами, кратными трем.

3. Перенести первые k элементов в конец: a[k+1], a[k+2], .. ,a[n], a[2], .., a[k].

4.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-45,95]. Удалить из него все элементы кратные 7 и принадлежащие промежутку [a, b].

2. Вставить число К между всеми соседними элементами, которые имеют одинаковые знаки.

3. Переставить в обратном порядке часть массива между элементами с номерами К1 и К2, включая их.

5.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-20,50]. Удалить из него все элементы, в записи которых есть цифра 5.

2. Вставить число К после всех элементов, кратных своему номеру.

3. Поменять местами первый положительный и последний отрицательный элементы.

6.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-40,30]. Удалить из него все четные элементы, у которых последняя цифра 2,

2. Вставить максимальный элемент массива после всех элементами, в которых есть цифра 1.

3. Переставить первые k и последние k элемента местами, сохраняя порядок их следования.

7.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,60]. Удалить из него все элементы, в которых последняя цифра нечетная, а само число кратно 3.

2. Вставить элемент со значением К после всех четных элементов, начинающихся на цифру К.

3. Переставить элементы следующим образом: a[1], a[12], a[2], a[11], a[3], a[10],a[4], a[9], a[5], a[8], a[6], a[7].

8.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-135,175]. Удалить из него все элементы, первая и последняя цифра которых четная.

2. Вставить число К1 после всех элементов, больших заданного числа, а число К2 – после всех элементов, кратных пяти.

3. Перенести первые k элементов в конец: a[k+1], a[k+2], .. ,a[n], a[2], .., a[k].

9.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-95,95]. Удалить из него все отрицательные элементы кратные 5 и принадлежащие промежутку [a,b].

2. Вставить число К между всеми соседними элементами, которые имеют разные знаки.

3. Переставить в обратном порядке часть массива между элементами с номерами К1 и К2, включая их.

10.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-50,50]. Удалить из него все элементы, в записи которых последняя цифра равна 0.

2. Вставить значение минимального элемента массива после всех четных элементов.

3. Поменять местами две половины массива, сохраняя их порядок.

11.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-140,140]. Удалить из него все элементы, у которых первая и вторая цифры одинаковые.

2. Вставить число К после всех элементами, в записи которых есть цифра 0.

3. Переставить первые два и средние два элемента местами, сохраняя порядок их следования (количество элементов – четное).

12.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,100]. Удалить из него все максимальные элементы.

2. Вставить максимальное значение элементов массива перед всеми элементами, в записи которых есть цифра 1.

3. Переставить последние три и средние три элемента местами, сохраняя порядок их следования (количество элементов – нечетное).

13.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-200,500]. Удалить из него все элементы, в записи которых есть цифра 0.

2. Вставить число К после всех четных элементов.

3. Поменять местами три первых положительный элемента с тремя первыми отрицательными элементами, сохраняя порядок их следования.

14.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-60,60]. Удалить из него все элементы, в которых последняя цифра нечетная.

2. Вставить элемент со значением К после всех нечетных элементов, начинающихся на цифру К.

3. Поменять местами три последних отрицательных элемента с тремя первыми отрицательными элементами, сохраняя порядок их следования.

15.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-600,600]. Удалить из него все элементы, в которых последняя цифра ноль.

2. Вставить элемент со значением К после всех четных элементов, оканчивающихся на ноль.

3. Поменять местами три средних элемента с тремя последними отрицательными элементами, сохраняя порядок их следования.


tasks_1

Лабораторная работа №4: Задания первого уровня

конец

вопросы

задания

№ вар.

Задание

1.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,10]. Найти сумму элементов, имеющих нечетное значение.

2. Вывести индексы тех элементов, значения которых больше заданного числа А.

3. Определить, есть ли в данном массиве положительные элементы, кратные заданному числу К.

2.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-15,15]. Найти произведение элементов, имеющих четное значение.

2. Вывести индексы тех элементов, значения которых по модулю меньше заданного числа А.

3. Определить, есть ли в данном массиве положительные элементы, делящиеся на заданное число k с остатком 2.

3.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,20]. Найти сумму элементов, имеющих нечетные индексы.

2. Подсчитать количество элементов массива, значения которых больше заданного числа А и кратных 5.

3. Найти номер первого отрицательного элемента, делящегося на 5 с остатком 2.

4.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму четных элементов.

2. Подсчитать количество элементов массива, значения которых состоят из двух цифр.

3. Найти номер первого положительного элемента, делящегося на 5 с остатком 2.

5.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,100]. Найти сумму положительных элементов, значения которых меньше 10.

2. Вывести индексы тех элементов, значения которых кратны 3 и 5.

3. Определить, есть ли пара соседних элементов с суммой, равной заданному числу.

6.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму отрицательных элементов, значения которых кратно10.

2. Вывести индексы тех элементов, значения которых кратны 5 и 10.

3. Определить, есть ли пара соседних элементов с произведением, равным заданному числу.

7.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму четных отрицательных элементов.

2. Вывести индексы тех элементов, значения которых кратны 3 и 6.

3. Определить, есть ли пара соседних элементов с суммой, равной заданному числу.

8.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-20,40]. Найти удвоенную сумму положительных элементов.

2. Вывести индексы тех элементов, значения которых больше значения предыдущего элемента (начиная со второго).

3. Определить, есть ли две пары соседних элементов с одинаковыми знаками.

9.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-40,40]. Найти сумму элементов, значения которых по модулю меньше 10.

2. Вывести индексы тех элементов, значения которых больше значения последующего элемента.

3. Определить, есть ли две пары соседних элементов с разными знаками

10.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,200]. Найти сумму отрицательных элементов.

2. Найти количество тех элементов, значения которых положительны и не превосходят заданного числа А.

3. Найти номер последней пары соседних элементов с разными знаками.

11.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,200]. Найти сумму четных элементов, значения которых больше заданного числа.

2. Найти количество тех элементов, значения которых отрицательны и по модулю не превосходят заданного числа А.

3. Найти номер первой пары соседних элементов с разными знаками.

12.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,20]. Найти произведение четных элементов, значения которых по модулю меньше 5.

2. Найти количество тех элементов, значения которых нечетны и по модулю превосходят заданное число А.

3. Найти номер последней пары соседних элементов, сумма которых больше заданного числа.

13.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,10]. Найти сумму элементов, значения которых кратны 3 и5.

2. Найти количество тех элементов, значения которых положительны и по модулю не превосходят заданное число А.

3. Найти номер первой пары соседних элементов, сумма которых меньше заданного числа.

14.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,100]. Найти сумму элементов, значения которых состоят из одной цифры.

2. Найти количество тех элементов, значения которых положительны и кратны 3 и 5.

3. Найти номер последней пары соседних элементов с одинаковыми знаками, произведение которых меньше заданного числа.

15.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму положительных элементов, значения которых состоят из двух цифр.

2. Найти количество тех элементов, значения которых по модулю превосходят 100 и кратны 5 и 10.

3. Найти номер первой пары соседних элементов с разными знаками, сумма которых меньше заданного числа.


tasks_2

Лабораторная работа №4: Задания второго уровня

конец

вопросы

задания

№ вар.

Задание

1.

1. Заменить первый элемент массива, кратный 5, нулем.

2. Заменить элементы массива с нечетными номерами на квадраты их номеров.

3. Из элементов массива D сформировать массив A той же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = Di2, а если нечетный, то по формуле Ai = Di / i.

2.

1. Заменить последний элемент массива, кратный 3, нулем.

2. Заменить элементы массива с четными номерами на произведение значения этого элемента и его номера.

3. Из элементов массива D сформировать массив A той же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = i*Di2, а если нечетный, то по формуле Ai = Di / (i-1)

3.

1. Заменить последний положительный элемент массива на второй элемент массива.

2. Разделить все элементы массива с четными номерами на первый элемент (первый элемент отличен от 0).

3. Из элементов массива D сформировать массив A той же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = Di2, если нечетный, то по формуле Ai = 2Di.

4.

1. Заменить последний отрицательный элемент массива на модуль первого элемента массива.

2. Разделить все элементы массива с нечетными номерами на последний элемент (последний элемент отличен от 0).

3. Из элементов массива D сформировать массив A той же размерности по правилу: если номер четный, то значение элемента находится по формуле Ai = Di2+ i, а если нечетный, то по формуле Ai = i*Di

5.

1. Заменить минимальный по модулю отрицательный элемент массива первым элементом.

2. Заменить последние k элементов массива на противоположные по знаку.

3. Из элементов массива C сформировать массив A той же размерности по правилу: если номер i элемента четный, то Ai=(i-1)*Ci, если нечетный, то Ai=2*i*Ci.

6.

1. Заменить максимальный по модулю отрицательный элемент массива нулем.

2. Заменить первые k элементов массива на противоположные по знаку.

3. Из элементов массива C сформировать массив A той же размерности по правилу: если номер i элемента четный, то Ai=Ci2, если нечетный, то Ai=2Ci.

7.

1. Заменить минимальный по модулю положительный элемент массива нулем.

2. Заменить элементы массива с k1-го по k2-й на те же элементы в обратном порядке.

3. Из элементов массива D сформировать массив A той же размерности по правилу: первые 10 элементов находятся по формуле Ai = Di+i, остальные по формуле Ai = Di-i.

8.

1. Заменить минимальный по модулю положительный элемент массива последним элементом.

2. Заменить первые k элементов массива на те же элементы в обратном порядке.

3. Из элементов массива D сформировать массив A той же размерности по правилу: все четные элементы находятся по формуле Ai = Di+i, , а нечетные по формуле Ai = Di-i.

9.

1. Заменить максимальный элемент массива на противоположный по знаку.

2. Заменить нулями элементы массива между минимальным и максимальным, кроме их самих.

3. Из элементов массива D сформировать массив A той же размерности по правилу: элементы с 3-го по 12-й находятся по формуле Ai = -Di2, остальные по формуле Ai = Di-1.

10.

1. Заменить минимальный элемент массива на средний (количество элементов – нечетно).

2. Заменить нулями элементы массива между минимальным по модулю и максимальным по модулю, кроме их самих.

3. Из элементов массива D сформировать массив A той же размерности по правилу: элементы с первого по k-ый находятся по формуле Ai = -Di2, остальные по формуле Ai = Di-1.

11.

1. Заменить первый отрицательный элемент массива нулем.

2. Умножить все элементы массива, кратные 3, на третий элемент массива.

3. Из элементов массива P сформировать массив M той же размерности по правилу: если номер четный, то Mi=i*Pi , если нечетный, то Mi=-Pi.

12.

1. Заменить первый отрицательный элемент массива на первый положительный.

2. Умножить все четные положительные элементы на последний элемент массива.

3. Из элементов массива P сформировать массив M той же размерности по правилу: если элемент четный, то Mi=i*Pi , если нечетный, то Mi=-Pi.

13.

1. Заменить последний отрицательный элемент массива предпоследним элементом масива.

2. Умножить все элементы массива, кратные 3, на его номер.

3. Из элементов массива P сформировать массив M той же размерности по правилу: каждый третий элемент по формуле Mi=i*Pi , а все остальные по формуле Mi=-Pi*(i+1).

14.

1. Заменить предпоследний элемент массива на максимальный по модулю.

2. Умножить все нечетные элементы массива, кратные 3, на его номер.

3. Из элементов массива P сформировать массив M той же размерности по правилу: первый и последний элементы равны нулю, каждый четвертый элемент по формуле Mi=4*abs(Pi ), а все остальные по формуле Mi=-Pi*(i+1).

15.

1. Заменить второй элемент массива на максимальный среди отрицательных.

2. Заменить элементы массива между минимальным и максимальным на те же элементы в обратном порядке

3. Из элементов массива P сформировать массив M той же размерности по правилу: первый и последний элементы равны нулю, а все остальные по формуле Mi=-Pi*(i+1).


tasks_3

Лабораторная работа №4: Задания третьего уровня

конец

вопросы

задания

№ вар.

Задание

1.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-40,30]. Удалить из него все элементы, которые состоят из одинаковых цифр (включая однозначные числа).

2. Вставить число К перед всеми элементами, в которых есть цифра 1.

3. Переставить первые три и последние три элемента местами, сохраняя порядок их следования.

2.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,60]. Удалить из него все элементы, в которых последняя цифра четная, а само число делится на нее.

2. Вставить элемент со значением К до и после всех элементов, заканчивающихся на цифру К.

3. Переставить элементы следующим образом: a[1], a[12], a[2], a[11], a[3], a[10],a[4], a[9], a[5], a[8], a[6], a[7].

3.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-35,75]. Удалить из него все элементы, первая цифра которых четная.

2. Вставить число К1 после всех элементов, больших заданного числа, а число К2 – перед всеми элементами, кратными трем.

3. Перенести первые k элементов в конец: a[k+1], a[k+2], .. ,a[n], a[2], .., a[k].

4.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-45,95]. Удалить из него все элементы кратные 7 и принадлежащие промежутку [a, b].

2. Вставить число К между всеми соседними элементами, которые имеют одинаковые знаки.

3. Переставить в обратном порядке часть массива между элементами с номерами К1 и К2, включая их.

5.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-20,50]. Удалить из него все элементы, в записи которых есть цифра 5.

2. Вставить число К после всех элементов, кратных своему номеру.

3. Поменять местами первый положительный и последний отрицательный элементы.

6.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-40,30]. Удалить из него все четные элементы, у которых последняя цифра 2,

2. Вставить максимальный элемент массива после всех элементами, в которых есть цифра 1.

3. Переставить первые k и последние k элемента местами, сохраняя порядок их следования.

7.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,60]. Удалить из него все элементы, в которых последняя цифра нечетная, а само число кратно 3.

2. Вставить элемент со значением К после всех четных элементов, начинающихся на цифру К.

3. Переставить элементы следующим образом: a[1], a[12], a[2], a[11], a[3], a[10],a[4], a[9], a[5], a[8], a[6], a[7].

8.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-135,175]. Удалить из него все элементы, первая и последняя цифра которых четная.

2. Вставить число К1 после всех элементов, больших заданного числа, а число К2 – после всех элементов, кратных пяти.

3. Перенести первые k элементов в конец: a[k+1], a[k+2], .. ,a[n], a[2], .., a[k].

9.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-95,95]. Удалить из него все отрицательные элементы кратные 5 и принадлежащие промежутку [a,b].

2. Вставить число К между всеми соседними элементами, которые имеют разные знаки.

3. Переставить в обратном порядке часть массива между элементами с номерами К1 и К2, включая их.

10.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-50,50]. Удалить из него все элементы, в записи которых последняя цифра равна 0.

2. Вставить значение минимального элемента массива после всех четных элементов.

3. Поменять местами две половины массива, сохраняя их порядок.

11.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-140,140]. Удалить из него все элементы, у которых первая и вторая цифры одинаковые.

2. Вставить число К после всех элементами, в записи которых есть цифра 0.

3. Переставить первые два и средние два элемента местами, сохраняя порядок их следования (количество элементов – четное).

12.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,100]. Удалить из него все максимальные элементы.

2. Вставить максимальное значение элементов массива перед всеми элементами, в записи которых есть цифра 1.

3. Переставить последние три и средние три элемента местами, сохраняя порядок их следования (количество элементов – нечетное).

13.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-200,500]. Удалить из него все элементы, в записи которых есть цифра 0.

2. Вставить число К после всех четных элементов.

3. Поменять местами три первых положительный элемента с тремя первыми отрицательными элементами, сохраняя порядок их следования.

14.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-60,60]. Удалить из него все элементы, в которых последняя цифра нечетная.

2. Вставить элемент со значением К после всех нечетных элементов, начинающихся на цифру К.

3. Поменять местами три последних отрицательных элемента с тремя первыми отрицательными элементами, сохраняя порядок их следования.

15.

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-600,600]. Удалить из него все элементы, в которых последняя цифра ноль.

2. Вставить элемент со значением К после всех четных элементов, оканчивающихся на ноль.

3. Поменять местами три средних элемента с тремя последними отрицательными элементами, сохраняя порядок их следования.


th1

Лабораторная работа №4: Массивы

конец

вопросы

задания

Многие задачи, которые решаются с помощью компьютера, связаны с обработкой больших объемов информации, представляющей совокупность данных, объединенных единым математическим содержанием или связанных между собой по смыслу. Такие данные удобно представлять в виде линейных или прямоугольных таблиц.

В линейной таблице каждому ее элементу соответствует порядковый номер. Для элемента прямоугольной таблицы должны быть указаны два номера: номер по вертикали (номер строки) и номер по горизонтали (номер столбца).

В высшей математике табличные величины называют соответственно векторами и матрицами.

В программе для представления таких данных используются массивы. Массив — это упорядоченная совокупность однотипных данных, с каждым из которых связан упорядоченный набор целых чисел, называемых индексами. Массив характеризуется именем, размерностью и размером.

Имя массива образуется по общему правилу образования имен, т. е. представляет собой идентификатор, например A, Bl, C8 и т. д. Однако оно не должно совпадать с именем ни одной простой переменной, используемой в той же программе.

Работа с массивом сводится к действиям над его элементами. Для того чтобы указать, какой элемент в данный момент используется, достаточно задать его порядковый номер, который приписывается к имени соответствующего массива. Таким образом, элементы массива обозначаются переменной с индексами. Запись переменной с индексами состоит из имени массива и следующего за ним в квадратных скобках списка индексов, например А[1], A[I], B1[K], C8[I, J], С8[2, 1]

Индексы определяют положение элемента в массиве. Число индексов определяет размерность массива, т.е. форму его компоновки: одномерный, двумерный и т. д. Одномерный массив соответствует линейной таблице. Его элемент обозначается переменной с одним индексом: A[l], A[I] —соответственно первый и i-й элементы одномерного массива А;

Двумерный массив описывает в программе прямоугольную таблицу. Его элементы обозначаются переменной с двумя индексами: C8[I, J], С8[2, 1], где первый индекс обозначает номер строки, а второй — номер столбца.

Таким образом, для обращения к конкретному элементу массива необходимо указать имя массива и значения индексов.

Для записи элементов массива в память компьютера нужно выделить для их хранения необходимое количество (массив) ячеек памяти, которое определяется размером массива. Размеры массива задаются границами изменения индексов по каждому измерению (минимальное и максимальное значение индекса).

По умолчанию применяется так называемая нумерация с нулевой базой, т.е. элементы массива нумеруются, начиная с 0.

В программе для каждого массива должны быть указаны его параметры: имя, размерность и размеры. Эта информация нужна для резервирования необходимого объема памяти для хранения числовых значений; она задается специальным оператором описания массивов.

Описание статического массива определяет имя, размер массива и тип данных, которые в нем хранятся. Формат описания в разделе переменных:

Var

 <имя_массива>: array <[тип_индекса]> of <тип_данных>;

Чаще всего в качестве типа индекса используется интервальный целый тип (тип-диапазон). Интервальный тип задается начальным и конечным значениями, которые разделяются двумя точками.

Например

Var
 A : array [1..10] of real;

Описывается одномерный массив вещественных чисел A, который максимально может состоять из 10 элементов. Нижняя граница индекса равна 1, верхняя – 10.

Начиная с версии Delphi 4 можно использовать также и динамические массивы, когда количество элементов может меняться по ходу выполнения программы.

Динамические массивы отличаются от обычных статических тем, что для них не объявляется заранее длина – число элементов. Объявление такого массива содержит только имя и тип элементов.

Var  <имя_массива>: array of <тип_данных>.

При объявлении динамического массива место под него не отводится. Прежде чем использовать такой массив, надо задать в программе его размер процедурой SetLength. Параметры данной процедуры - количество элементов по каждой размерности. Например, SetLength(10,20) - для двумерного массива.


th2

Лабораторная работа №4: Массивы. Линейные (одномерные) массивы

начало

назад

вперед

конец

вопросы

задания

Линейный (одномерный) массив – это просто список элементов данных.

Примеры описания одномерных массивов:

var B : array [0..5] of real
     R : array [1..34] of char;
     N : array [’A’..’Z’] of integer;
     M : array of integer; {динамический массив}

Для доступа к элементу массива следует указать имя массива с последующим числом (индексом), заключенном в квадратные скобки.

Элементы массива можно использовать в любом выражении точно также как и значение константы или переменной.

Например,
a[0]=11.2;
a[1]=10.2;    a[3]=22.1;
a[4]=1.1;
Y = a[0] * 2 – a[1];


th3

Лабораторная работа №4: Типовые задачи на обработку одномерных массивов

начало

назад

вперед

конец

вопросы

задания

Формирование массива, вычисление суммы, произведения, количества элементов, среднего арифметического элементов массива, максимального и минимального элемента массива.

Пример.

Приложение предлагает пользователю задать размер линейного массива, заполняет этот массив случайными целыми числами в диапазоне от –10 до 10, выводит список элементов массива, затем по выбору пользователя определяет: сумму всех элементов массива, количество положительных элементов массива, наименьший элемент массива и среднее арифметическое элементов массива кратных пяти.

Компоненты приложения | Окно формы приложения
Edit Label CheckBox Button GroupBox |

Краткая характеристика компоненты GroupBox

Панель GroupBox [image] группы Standard – это контейнер с рамкой и надписью, объединяющий группу связанных органов управления, таких как переключатели RadioButton , флажки CheckBox и т.д.

Свойства панели GroupBox

Caption

Задает надпись для рамки, выделяющей группу объединенных компонент.

Если компоненты, размещаемые на панели, оказываются под панелью и не отображаются, то следует выделить панель и выбрать в контекстном меню команду Control → Send to Back (Порядок → На задний план).

Программный код приложения

Обратите внимание, что размер массива N и сам массив M описаны в разделе объявления типов, констант, переменных, функций и процедур, доступном для всех модулей приложения, т.к. эти переменные будут использоваться в разных событийных процедурах: в процедуре заполнения массива случайными числами TForm1.Button1Click и процедуре обработки массива TForm1.Button2Click.

Все подзадачи решаются за один просмотр элементов массива.

Например, поиск минимального элемента в массиве. Вначале устанавливается текущий минимум по нулевому элементу массива min:=M[0]. Затем начинается просмотр элементов массива: выбирается очередной элемент M[i] и сравнивается с min. Если элемент M[i] меньше текущего min, то выполняется переприсваивание min:=M[i].

Задание 1.
Выполните индивидуальное задание из предложенных задач первого уровня.

Сохраните проект.


th4

Лабораторная работа №4: Линейная сортировка массива

конец

вопросы

задания

Существует множество алгоритмов для сортировки массивов. Ниже рассмотрены два из них: сортировка выбором и методом пузырька.

Сортировка выбором

Суть этого метода очень проста и может быть описана так:

1. В последовательности из n элементов выбирается наименьший (наибольший) элемент;

2. Меняется местом с первым;

3. Далее процесс повторяется с оставшимися n-1 элементами, затем с оставшимися n-2 элементами и т.д., до тех пор пока не останется один самый большой (маленький) элемент.

Для реализации этого алгоритма необходимо использовать два вложенных цикла с параметром For. Внешний цикл (по i) предназначен для последовательного фиксирования элементов массива, внутренний (по j) - осуществляет поиск минимального (максимального) и его позиции в неотсортированной части массива. После выхода из внутреннего цикла следует перестановка элементов. Последний элемент во внешнем цикле не рассматривается: он сам встанет на свое место.

Окно формы приложения

Программный код процедуры сортировки выбором

Сортировка методом пузырька

Метод основан на сравнении соседних элементов. «Неправильно» расположенные по отношению друг к другу элементы меняются местами. Во вложенных циклах поочередно фиксируется пара соседних элементов массива. В результате первого прохода элемент с минимальным значением оказывается в первой позиции массива (всплывает).

Фрагмент программного кода сортировки методом пузырька

Задание 2.
Заполните массив случайными числами. Отсортируйте массив по возрастанию методом пузырька.

Сохраните проект.

Задание 3.
Выполните индивидуальное задание из предложенных задач второго уровня.

Сохраните проект.


th5

Лабораторная работа №4: Уплотнение массива

конец

вопросы

задания

Уплотнение массива – это удаление из него элементов, отвечающих тем или иным условиям. Образующиеся пустоты заполняются за счет сдвига всех оставшихся элементов. Так как массив укорачивается, при обработке массива необходимо использовать не цикл с параметром, а цикл с условием.

Пример. Удалить из сформированного массива числа, кратные трем.

Фрагмент программного кода уплотнения массива

Обратите внимание: на место удаленного i-го элемента переписывается i+1-ый элемент, на место i+1-го элемента переписывается i+2-ой элемент и т.д.


th6

Лабораторная работа №4: Вставка элемента в массив

конец

вопросы

задания

Вставка элемента в массив – задача обратная предыдущей. Прием используется тот же – смещение группы элементов на одну позицию. Только при уплотнении сдвиг производится влево, при вставке – вправо. При вставке возникает проблема, что делать с последними элементами? Если в дальнейшей работе с массивом участвуют только заявленные элементы, то «хвост» придется вытеснить, последние значения при этом будут утрачены. Иначе, нужно создавать дополнительный массив, размерность которого будет больше исходного на количество вставленных элементов. Выбор типа цикла для работы с массивом зависит от конкретного случая.

Пример. В заданный упорядоченный по возрастанию массив вставить заданное число, не нарушая его упорядоченности. Последний элемент вытеснить.

Можно использовать цикл с параметром, так как хвост подлежит вытеснению, и число элементов в массиве остается неизменным

Фрагмент программного кода


th7

Лабораторная работа №4: Изменение положения элементов на некотором отрезке

начало

назад

вперед

конец

вопросы

задания

При решении задач такого типа очень важен контроль за границами диапазона изменения индексов: они должны быть целыми, не выходить за пределы диапазона, кроме того, нижняя граница диапазона должна быть меньше верхней.

Пример.

В одномерном массиве, состоящем из n элементов, изменить порядок следования значений элементов на обратный от позиции n1 до позиции n2 (n1<n2<n).

Фрагмент программного кода

В приведенном фрагменте программы цикл выполняется лишь до половины диапазона
(от n1 до (n1+n2) div 2) иначе в массиве ничего не изменится.


th8

Лабораторная работа №4: Кольцевой сдвиг элементов массива

конец

вопросы

задания

Кольцевой сдвиг – это смещение элементов массива вправо либо влево, причем вытесненные элементы занимают освободившиеся в результате смещения позиции в противоположном конце массива – так, словно массив представляет собой кольцо (первый и последний элементы смыкаются). Порядок следования элементов при этом сохраняется.

Пример

В одномерном массиве, состоящем из n элементов произвести кольцевой сдвиг элементов на k позиций. Значение k задается, оно может быть как положительным, так и отрицательным, но целым и лежать в диапазоне:
(n-1) < k < n-1

Фрагмент программного кода

Задание 4.
Выполните индивидуальное задание из предложенных задач третьего уровня.

Сохраните проект.


th9

Лабораторная работа №4: Ошибки при использовании массивов

конец

вопросы

задания

При использовании массивов наиболее распространенной ошибкой является выход значения индексного выражения за допустимые границы, указанные при объявлении массива.

Если в качестве индекса используется константа, и ее значение выходит за допустимые границы, то такая ошибка обнаруживается на этапе компиляции.

Например:

Если при обращении к элементу массива в качестве индекса используется переменная или выражение, то возможно возникновение ошибки времени выполнения программы.

В программы, в которых возможны ошибки времени выполнения вследствие неправильного ввода исходных данных, следует добавлять инструкции проверки вводимых данных. Например так,


index

Лабораторная работа №5: Массивы. Многомерные массивы

конец

вопросы

задания

Темы:

Многомерные массивы

Ввод и вывод массивов

Типовые задачи на двухмерные массивы

Преобразование двухмерных массивов. Поворот матрицы на 90 и 180 градусов

Преобразование двухмерных массивов. Зеркальное отображение матриц относительно горизонатальной и вертикальной осей

Преобразование двухмерного массива в одномерный и наоборот

Типовые задачи с квадратными матрицами

Задания первого уровня

Задания второго уровня

Задания третьего уровня

Контрольные вопросы и задания


q

Лабораторная работа №5: Контрольные вопросы и задания

конец

вопросы

задания

1. Что такое массив данных?

2. Как и в каком разделе программного кода описываются массивы?

3. Как определить местоположение элемента в массиве?

4. Что такое индекс? Каким требованиям он должен удовлетворять?

5. Как осуществляется доступ к элементам массива?

6. Что такое динамический массив?

7. Опишите отличия статических и динамических массивов. Каков порядок описания и применения динамических массивов?

8. Когда и для чего используется процедура SetLength?

9. Какие компоненты удобно применять при работе с одномерными, двухмерными массивами?

10. Как в среде Delphi осуществляется ввод и вывод элементов массива?

11. Что следует сделать, чтобы в компоненте StringGrid можно было вводить данные?

12. Как используется свойство Cells компоненты StringGrid?

13. Для чего используются свойства FixedRows и FixedCols в StringGrid?

14. Каково назначение компоненты GroupBox? Как задать надпись в этом компоненте?

15. Чем отличаются компоненты RadioGroup и GroupBox? Как задать список элементов в объекте RadioGroup?

16. С какой целью используется оператор with..do для обращения к элементам объекта?


t

Лабораторная работа №5: Индивидуальные задания

конец

вопросы

задания

Задания первого уровня

№ вар | Задание
1. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве строка, в которой имеется два элемента массива, имеющие наибольшие значения. 2. Заполнить массив n*n по правилу:
2. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить в нем разность между средним арифметическим элементов массива и средним арифметическим максимального и минимального элементов. 2. Заполнить массив n*n по правилу:
3. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти строку с минимальной суммой и в ней максимальный элемент. 2. Заполнить массив n*n по правилу:
4. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве столбец, в котором имеются одинаковые элементы. 2. Заполнить массив n*n по правилу:
5. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве строка, в которой ровно два отрицательных элемента. 2. Заполнить массив n*n по правилу:
6. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве строка, содержащая больше положительных элементов, чем отрицательных. 2. Заполнить массив n*n по правилу:
7. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить в нем столбец с максимальной суммой и в нем минимальный по величине элемент. 2. Заполнить массив n*n по правилу:
8. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов. 2. Заполнить массив n*n по правилу:
9. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить номера строк массива, содержащих только положительные элементы и найти среди них наибольший. 2. Заполнить массив n*n по правилу:
10. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти среднее арифметическое элементов, принадлежащих первой строке, последней строке, первому столбцу и последнему столбцу. 2. Заполнить массив n*n по правилу:
11. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Изменить массив путем деления всех его элементов на максимальный по модулю элемент. 2. Заполнить массив 6*6 по правилу:
12. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти сумму его элементов, расположенных между максимальным и минимальным элементами (включая оба этих числа). 2. Заполнить массив 6*6 по правилу:
13. | 1. Дан двумерный массив размером n*m, заполненный случайными натуральными числами в диапазоне от 1 до 100. Определить, сколько чисел в массиве равны произведению своих индексов i*j. 2. Заполнить массив 7*7 по правилу:
14. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить в нем строку с максимальной и столбец с минимальной суммой элементов. Задачу решить за один проход. 2. Заполнить массив 7*7 по правилу:
15. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти в каждой строке массива максимальный и минимальный элементы и поменять их с первым и последним элементом соответственно. 2. Заполнить массив 7*7 по правилу:

Задания второго уровня

№ вар

Задание

1.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный по модулю элемент каждой строки на противоположный по знаку.

2. Вставить после каждой четной строки первую строку.

3. Удалить все строки, содержащие ноль

4. Поменять местами средние столбцы

2.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить минимальный по модулю элемент каждого столбца нулем

2. Вставить после каждой строки, содержащей минимальное значение строку из нулей.

3. Удалить все столбцы, в которых первый элемент больше последнего

4. Поменять местами первый и последний столбцы.

3.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить все элементы первых трех столбцов на их квадраты.

2. Вставить после каждой нечетной строки первую строку.

3. Удалить все столбцы, в которых первый элемент больше последнего,

4. Поменять местами средние строки с первой и последней

4.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить минимальный по модулю элемент каждого столбца на противоположный

2. Вставить после каждого столбца, содержащего значение равное нулю столбец из нулей.

3. Удалить все строки, содержащие максимальные элементы

4. Поменять местами первый и последний столбцы

5.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждой строки на противоположный по знаку

2. Вставить после всех столбцов, содержащих максимальный элемент столбец из нулей.

3. Удалить все столбцы, в которых есть отрицательный элемент

4. Поменять местами первый и последний столбцы.

6.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждой строки нулем

2. Вставить перед всеми строками, первый элемент которых делится на 3, строку из нулей.

3. Удалить самый левый столбец, в котором встретиться четный отрицательный элемент.

4. Поменять местами второй и предпоследний столбцы.

7.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждой строки нулем

2. Вставить после каждого столбца, содержащего максимальный элемент массива, столбец из нулей.

3. Удалить все столбцы, в которых встретится нечетный положительный элемент.

4. Поменять местами первый и предпоследний столбцы.

8.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждого столбца нулем

2. Вставить после всех строк, содержащих максимальный по модулю элемент, первую строку.

3. Удалить из него строку и столбец, на перекрестье которых находится максимальный по модулю элемент..

4. Поменять местами последний и предпоследний столбцы.

9.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить нулевой элемент каждого столбца максимальным по модулю элементом массива

2. Вставить после каждой строки, содержащей максимальный по модулю элемент, последнюю строку.

3. Удалить из него каждую строку, содержащую нулевой элемент

4. Поменять местами два средних столбца.

10.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить отрицательный элемент каждого столбца нулем

2. Вставить после каждого столбца, содержащего максимальный по модулю элемент, строку из нулей.

3. Удалить из него каждую строку, содержащую элемент, кратный трем

4. Поменять местами первый и последний столбцы.

11.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить элемент кратный трем каждого столбца нулем

2. Вставить после каждого столбца, начиная со второго первый столбец.

3. Удалить из него каждый столбец, содержащий элемент, кратный пяти

4. Поменять местами третий и последний столбцы.

12.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить четный элемент каждого столбца максимальным по модулю

2. Вставить после столбцов, содержащих минимальное значение второй столбец.

3. Удалить все строки, в которых второй элемент больше предпоследнего

4. Поменять местами первый и средний столбцы.

13.

Дан двумерный массив размером n*m, заполненный случайным образом.

5. Заменить нечетный элемент каждой строки нулем

6. Вставить после всех строк, содержащих минимальное значение строку 1,2,3,….

7. Удалить все столбцы, в которых первый элемент четный

8. Поменять местами первый и последний столбцы.

14.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждой строки номером столбца, в которой он находится.

2. Вставить после всех столбцов, содержащих нулевой элемент, первый столбец .

3. Удалить все строки, в которых встретится четный отрицательный элемент.

4. Поменять местами первый и предпоследний столбцы.

15.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить четный элемент каждой строки нулем

2. Вставить после всех строк, содержащих минимальный элемент массива, строку 2, 4, 6,…

3. Удалить все столбцы, в которых встретится элемент по модулю больший левого верхнего (a1,1).

4. Поменять местами третий и последний столбцы.

Задания третьего уровня

№ вар

Задание

1.

1. Определить является ли целочисленная матрица симметричной относительно главной диагонали. При отсутствии симметрии заменить элементы на минимальный из них.

2. Сформировать матрицу 7х7 элементов, заполненную согласно схеме. Вывести ее на экран, развернув на 90 градусов по часовой стрелке.

2.

1. Определить является ли целочисленная матрица симметричной относительно побочной диагонали. При отсутствии симметрии заменить элементы на минимальный из них.

2. Сформировать квадратную матрицу (N³4). Найти сумму, отмеченных элементов.

3.

1. Определить является ли целочисленная матрица симметричной относительно главной диагонали. При отсутствии симметрии заменить элементы нулями.

2. Сформировать квадратную матрицу (N³4). Найти произведение, отмеченных элементов.

4.

1. Подсчитать количество одинаковых чисел над главной диагональю матрицы

2. Сформировать квадратную матрицу (N³4). Найти среднее арифметическое, отмеченных элементов.

5.

1. Подсчитать количество разных чисел над главной диагональю матрицы

2. Сформировать квадратную матрицу (N³4). Найти сумму четных элементов, из отмеченных.

6.

1. Подсчитать количество одинаковых чисел под главной диагональю матрицы

2. Сформировать квадратную матрицу (N>4). Найти максимальный из отмеченных элементов.

7.

1. Подсчитать количество различных чисел над побочной диагональю матрицы

2. Расположить столбцы матрицы D[M,N] в порядке возрастания элементов k–ой строки (1£ k £M).

8.

1. Подсчитать количество одинаковых чисел под побочной диагональю матрицы

2. Сформировать массив Z(N,N). Повернуть его на 270 градусов.

9.

1. Определить является ли заданная матрица симметричной относительно главной диагонали. При отсутствии симметрии вывести месторасположения несимметричных элементов.

2. Сформировать двухмерный массив. Преобразовать его в одномерный, упорядочить одномерный массив по убыванию и снова преобразовать его в двухмерный.

10

1. Определить является ли заданная матрица симметричной относительно побочной диагонали. При отсутствии симметрии вывести месторасположения несимметричных элементов.

2. Сформировать одномерный массив из целых чисел x1, x2, ..,xn-1, xn. Получить квадратную матрицу порядка n. Вывести ее на экран, зеркально отразив относительно горизонтальной оси.

11.

1. Определить является ли заданная матрица симметричной относительно горизонтальной оси. При отсутствии симметрии вывести месторасположения несимметричных элементов.

2. Сформировать матрицу размером NxM. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в верхнем левом углу.

12.

1. Определить является ли заданная матрица симметричной относительно вертикальной оси. При отсутствии симметрии вывести месторасположения несимметричных элементов.

2. Дана квадратная матрица, сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы одномерного массива. Преобразовать исходную матрицу по правилу: четные строки разделить на полученное значение, нечетные оставить без изменения.

13.

1. Определить является ли целочисленная матрица симметричной относительно горизонтальной оси. При отсутствии симметрии заменить элементы на минимальный из них.

2. Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и вывести ее по строкам.

14.

1. Определить является ли целочисленная матрица симметричной относительно вертикальной оси. При отсутствии симметрии заменить элементы на минимальный из них.

2. Задана матрица порядка n и число k. Разделить элементы k-строки на диагональный элемент, расположенный в этой строке.

15

1. Определить является ли заданная целочисленная квадратная матрица магическим квадратом (магический квадрат – это квадратная матрица, у которой суммы чисел в каждой строке, в каждом столбце и диагоналях равны между собой).

2. Дана квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера n x n крест-накрест.


t_1

Лабораторная работа №5: Задания первого уровня

конец

вопросы

задания

№ вар | Задание
1. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве строка, в которой имеется два элемента массива, имеющие наибольшие значения. 2. Заполнить массив n*n по правилу:
2. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить в нем разность между средним арифметическим элементов массива и средним арифметическим максимального и минимального элементов. 2. Заполнить массив n*n по правилу:
3. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти строку с минимальной суммой и в ней максимальный элемент. 2. Заполнить массив n*n по правилу:
4. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве столбец, в котором имеются одинаковые элементы. 2. Заполнить массив n*n по правилу:
5. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве строка, в которой ровно два отрицательных элемента. 2. Заполнить массив n*n по правилу:
6. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве строка, содержащая больше положительных элементов, чем отрицательных. 2. Заполнить массив n*n по правилу:
7. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить в нем столбец с максимальной суммой и в нем минимальный по величине элемент. 2. Заполнить массив n*n по правилу:
8. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов. 2. Заполнить массив n*n по правилу:
9. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить номера строк массива, содержащих только положительные элементы и найти среди них наибольший. 2. Заполнить массив n*n по правилу:
10. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти среднее арифметическое элементов, принадлежащих первой строке, последней строке, первому столбцу и последнему столбцу. 2. Заполнить массив n*n по правилу:
11. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Изменить массив путем деления всех его элементов на максимальный по модулю элемент. 2. Заполнить массив 6*6 по правилу:
12. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти сумму его элементов, расположенных между максимальным и минимальным элементами (включая оба этих числа). 2. Заполнить массив 6*6 по правилу:
13. | 1. Дан двумерный массив размером n*m, заполненный случайными натуральными числами в диапазоне от 1 до 100. Определить, сколько чисел в массиве равны произведению своих индексов i*j. 2. Заполнить массив 7*7 по правилу:
14. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить в нем строку с максимальной и столбец с минимальной суммой элементов. Задачу решить за один проход. 2. Заполнить массив 7*7 по правилу:
15. | 1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти в каждой строке массива максимальный и минимальный элементы и поменять их с первым и последним элементом соответственно. 2. Заполнить массив 7*7 по правилу:


t_2

Лабораторная работа №5: Задания второго уровня

конец

вопросы

задания

№ вар

Задание

1.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный по модулю элемент каждой строки на противоположный по знаку.

2. Вставить после каждой четной строки первую строку.

3. Удалить все строки, содержащие ноль

4. Поменять местами средние столбцы

2.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить минимальный по модулю элемент каждого столбца нулем

2. Вставить после каждой строки, содержащей минимальное значение строку из нулей.

3. Удалить все столбцы, в которых первый элемент больше последнего

4. Поменять местами первый и последний столбцы.

3.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить все элементы первых трех столбцов на их квадраты.

2. Вставить после каждой нечетной строки первую строку.

3. Удалить все столбцы, в которых первый элемент больше последнего,

4. Поменять местами средние строки с первой и последней

4.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить минимальный по модулю элемент каждого столбца на противоположный

2. Вставить после каждого столбца, содержащего значение равное нулю столбец из нулей.

3. Удалить все строки, содержащие максимальные элементы

4. Поменять местами первый и последний столбцы

5.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждой строки на противоположный по знаку

2. Вставить после всех столбцов, содержащих максимальный элемент столбец из нулей.

3. Удалить все столбцы, в которых есть отрицательный элемент

4. Поменять местами первый и последний столбцы.

6.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждой строки нулем

2. Вставить перед всеми строками, первый элемент которых делится на 3, строку из нулей.

3. Удалить самый левый столбец, в котором встретиться четный отрицательный элемент.

4. Поменять местами второй и предпоследний столбцы.

7.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждой строки нулем

2. Вставить после каждого столбца, содержащего максимальный элемент массива, столбец из нулей.

3. Удалить все столбцы, в которых встретится нечетный положительный элемент.

4. Поменять местами первый и предпоследний столбцы.

8.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждого столбца нулем

2. Вставить после всех строк, содержащих максимальный по модулю элемент, первую строку.

3. Удалить из него строку и столбец, на перекрестье которых находится максимальный по модулю элемент..

4. Поменять местами последний и предпоследний столбцы.

9.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить нулевой элемент каждого столбца максимальным по модулю элементом массива

2. Вставить после каждой строки, содержащей максимальный по модулю элемент, последнюю строку.

3. Удалить из него каждую строку, содержащую нулевой элемент

4. Поменять местами два средних столбца.

10.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить отрицательный элемент каждого столбца нулем

2. Вставить после каждого столбца, содержащего максимальный по модулю элемент, строку из нулей.

3. Удалить из него каждую строку, содержащую элемент, кратный трем

4. Поменять местами первый и последний столбцы.

11.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить элемент кратный трем каждого столбца нулем

2. Вставить после каждого столбца, начиная со второго первый столбец.

3. Удалить из него каждый столбец, содержащий элемент, кратный пяти

4. Поменять местами третий и последний столбцы.

12.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить четный элемент каждого столбца максимальным по модулю

2. Вставить после столбцов, содержащих минимальное значение второй столбец.

3. Удалить все строки, в которых второй элемент больше предпоследнего

4. Поменять местами первый и средний столбцы.

13.

Дан двумерный массив размером n*m, заполненный случайным образом.

5. Заменить нечетный элемент каждой строки нулем

6. Вставить после всех строк, содержащих минимальное значение строку 1,2,3,….

7. Удалить все столбцы, в которых первый элемент четный

8. Поменять местами первый и последний столбцы.

14.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить максимальный элемент каждой строки номером столбца, в которой он находится.

2. Вставить после всех столбцов, содержащих нулевой элемент, первый столбец .

3. Удалить все строки, в которых встретится четный отрицательный элемент.

4. Поменять местами первый и предпоследний столбцы.

15.

Дан двумерный массив размером n*m, заполненный случайным образом.

1. Заменить четный элемент каждой строки нулем

2. Вставить после всех строк, содержащих минимальный элемент массива, строку 2, 4, 6,…

3. Удалить все столбцы, в которых встретится элемент по модулю больший левого верхнего (a1,1).

4. Поменять местами третий и последний столбцы.


t_3

Лабораторная работа №5: Задания третьего уровня

конец

вопросы

задания

№ вар

Задание

1.

1. Определить является ли целочисленная матрица симметричной относительно главной диагонали. При отсутствии симметрии заменить элементы на минимальный из них.

2. Сформировать матрицу 7х7 элементов, заполненную согласно схеме. Вывести ее на экран, развернув на 90 градусов по часовой стрелке.

2.

1. Определить является ли целочисленная матрица симметричной относительно побочной диагонали. При отсутствии симметрии заменить элементы на минимальный из них.

2. Сформировать квадратную матрицу (N³4). Найти сумму, отмеченных элементов.

3.

1. Определить является ли целочисленная матрица симметричной относительно главной диагонали. При отсутствии симметрии заменить элементы нулями.

2. Сформировать квадратную матрицу (N³4). Найти произведение, отмеченных элементов.

4.

1. Подсчитать количество одинаковых чисел над главной диагональю матрицы

2. Сформировать квадратную матрицу (N³4). Найти среднее арифметическое, отмеченных элементов.

5.

1. Подсчитать количество разных чисел над главной диагональю матрицы

2. Сформировать квадратную матрицу (N³4). Найти сумму четных элементов, из отмеченных.

6.

1. Подсчитать количество одинаковых чисел под главной диагональю матрицы

2. Сформировать квадратную матрицу (N>4). Найти максимальный из отмеченных элементов.

7.

1. Подсчитать количество различных чисел над побочной диагональю матрицы

2. Расположить столбцы матрицы D[M,N] в порядке возрастания элементов k–ой строки (1£ k £M).

8.

1. Подсчитать количество одинаковых чисел под побочной диагональю матрицы

2. Сформировать массив Z(N,N). Повернуть его на 270 градусов.

9.

1. Определить является ли заданная матрица симметричной относительно главной диагонали. При отсутствии симметрии вывести месторасположения несимметричных элементов.

2. Сформировать двухмерный массив. Преобразовать его в одномерный, упорядочить одномерный массив по убыванию и снова преобразовать его в двухмерный.

10

1. Определить является ли заданная матрица симметричной относительно побочной диагонали. При отсутствии симметрии вывести месторасположения несимметричных элементов.

2. Сформировать одномерный массив из целых чисел x1, x2, ..,xn-1, xn. Получить квадратную матрицу порядка n. Вывести ее на экран, зеркально отразив относительно горизонтальной оси.

11.

1. Определить является ли заданная матрица симметричной относительно горизонтальной оси. При отсутствии симметрии вывести месторасположения несимметричных элементов.

2. Сформировать матрицу размером NxM. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в верхнем левом углу.

12.

1. Определить является ли заданная матрица симметричной относительно вертикальной оси. При отсутствии симметрии вывести месторасположения несимметричных элементов.

2. Дана квадратная матрица, сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы одномерного массива. Преобразовать исходную матрицу по правилу: четные строки разделить на полученное значение, нечетные оставить без изменения.

13.

1. Определить является ли целочисленная матрица симметричной относительно горизонтальной оси. При отсутствии симметрии заменить элементы на минимальный из них.

2. Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и вывести ее по строкам.

14.

1. Определить является ли целочисленная матрица симметричной относительно вертикальной оси. При отсутствии симметрии заменить элементы на минимальный из них.

2. Задана матрица порядка n и число k. Разделить элементы k-строки на диагональный элемент, расположенный в этой строке.

15

1. Определить является ли заданная целочисленная квадратная матрица магическим квадратом (магический квадрат – это квадратная матрица, у которой суммы чисел в каждой строке, в каждом столбце и диагоналях равны между собой).

2. Дана квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера n x n крест-накрест.


th1

Лабораторная работа №5: Массивы. Многомерные массивы

конец

вопросы

задания

Часто бывает необходимо представить таблицы данных в формате строк и столбцов. Для этого используют многомерные массивы.

Доступ к элементам, например, двухмерного массива (матрицы) осуществляется с помощью двух индексов. Первый индекс отвечает за строку, второй – за столбец: а[1,3],а[0,4] и т.д., например:

Формат описания двумерного массива в разделе объявления переменных:

Var
<имя_массива>:array<[тип_индекса,тип_индекса]>of <тип_данных>

Например

Var
 A : array [1..10, 1..10] of real;

Описывается двухмерный массив вещественных чисел A, который максимально может состоять из 10 строк и 10 столбцов. Нижняя граница индексов по обоим измерениям равна 1, верхняя – 10.


th2

Лабораторная работа №5: Ввод и вывод массивов

конец

вопросы

задания

В среде Delphi для ввода и вывода массивов используется компонент StringGrid, поэтому работа с массивами в Delphi сильно отличается от работы в Pascal.

Краткая характеристика компонента StringGrid

Компонент StringGrid [image] группы Additional представляет собой таблицу, содержащую строки. Таблица может иметь полосы прокрутки, причем заданное число первых строк и столбцов может быть фиксированным и не подвергаться прокрутке. Таким образом, можно задать заголовки столбцов и строк, постоянно присутствующих в окне компонента. Каждой ячейке таблицы может быть поставлен в соответствии некоторый объект.

Свойства компонента StringGrid

Cells | В этом свойстве хранятся все элементы таблицы. Имеет тип String.
FixedCols | Задает фиксированное количество столбцов в таблице
FixedRows | Задает фиксированное количество строк в таблице
Options → GoEditing | По умолчанию данные в таблицу вводить нельзя. Чтобы снять это запрет в этом свойстве надо задать True.
ColCount | Задает общее количество столбцов таблицы
RowCount | Задает общее количество строк таблицы

Пример использования в программе компонента StringGrid для вывода двумерного массива

Окно формы приложения

Программный код приложения


th3

Лабораторная работа №5: Типовые задачи на двухмерные массивы

конец

вопросы

задания

К типовым задачам с двухмерными массивами относятся задачи на вычисление суммы, произведения, количества, среднего арифметического, максимума, минимума элементов каждой строки или каждого столбца, заданной строки или заданного столбца.

Вычисления подобного рода осуществляются при помощи стандартных приемов, особенность которых заключается в организации вложенных циклов при обработке массивов.

Схема вложенного цикла с параметром

  For i := a1 to b1 do
       begin  . . . . . .
          For j := a2 to b2 do
              begin
                   . . . . . .
              end;
       end;

Цикл, который содержит другой цикл называют внешним циклом, а цикл, содержащийся в теле другого цикла, называют внутренним. Все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла.

Всякий раз, когда внутренний цикл завершается, внешний цикл увеличивает значение своего счетчика цикла на 1, и внутренний цикл выполняется вновь.

Поэтому, если за счетчик внешнего цикла взять индекс строки, а за счетчик внутреннего – номер столбца, то обработка двухмерного массива будет идти по строкам, а если наоборот, то по столбцам.

Пример.

Заполнить двухмерный массив M * N случайными целыми числами из диапазона [-40,40]. Определить:

1. сумму элементов каждой строки;

2. максимальные значения для каждого столбца;

3. произведение элементов k-ой строки, значения которых лежат в диапазоне от 20 до 40.

Окно формы приложения

Фрагмент программного кода

Задание 1.
Выполните индивидуальное задание из предложенных задач первого уровня.

Сохраните проект.


th4

Лабораторная работа №5: Преобразование двухмерных массивов

конец

вопросы

задания

Преобразование матриц заключается, как правило, в изменении порядка следования его элементов без изменения значений самих элементов.

Поворот матрицы на 90 и 180 градусов

Пример.

Сформировать массив из M x N элементов. Получить новый массив, повернув исходный на:

1. 1800;

2. 900 по часовой стрелке;

3. 900 против часовой стрелки.

Фрагменты кодов программы

Окно формы приложения


th5

Лабораторная работа №5: Преобразование двухмерных массивов

конец

вопросы

задания

Зеркальное отображение (поворот) массивов относительно горизонтальной и вертикальной осей

Пример.

Сформировать массив из M * N элементов. Зеркально отразить (повернуть) его относительно:

1. горизонтальной оси;

2. вертикальной оси.

Дополнительных массивов не создавать.

Важно! В первой задаче поворота массива относительно горизонтальной оси внешний цикл по строкам организуется только до (n-1) div 2 (горизонтальной оси массива). Во второй задаче поворота массива относительно вертикальной оси внутренний цикл по столбцам организуется только до (m-1) div 2 (вертикальной оси массива).

Фрагменты кодов программы

Окно формы приложения


th6

Лабораторная работа №5: Преобразование двухмерных массивов

конец

вопросы

задания

Преобразование двухмерного массива в одномерный

Пример.

Сформировать массив A, содержащий N строк и M столбцов. Преобразовать его в одномерный массив B.

Существуют два способа решения этой задачи:

1. задать независимый счетчик k для результирующего одномерного массива;

2. вычислять значение очередного элемента массива по формуле B(M * i+j) = A(i,j).

Фрагменты кодов программы

Использование независимого счетчика k для формирования одномерного массива | Вычисление очередного элемента одномерного массива по формуле B(M * i+j) = A(i,j)

Преобразование одномерного массива в двухмерный

Задача, обратная задаче преобразования двухмерного массива в одномерный. Аналогично существуют два варианта решения.

Задание 2.
Сформируйте одномерный массив из N*M элементов. Преобразуйте его в двухмерный массив (N строк, M столбцов), используя любой из вариантов решения.

Сохраните проект.

Задание 3.
Выполните индивидуальное задание из предложенных задач второго уровня.

Сохраните проект.


th7

Лабораторная работа №5: Типовые задачи с квадратными матрицами

начало

назад

вперед

конец

вопросы

задания

К таким задачам, наряду с предыдущими, относятся: вычисление суммы, произведения, количества элементов, среднеарифметического, максимума, минимума элементов на главной и побочной диагонали, а также выше и ниже диагоналей в задачах с квадратными матрицами.

Способ отбора нужных элементов для решения такого рода задач заключается в следующем:

  • для элементов, расположенных на главной диагонали, справедливо i = j (i – индекс строки, j – индекс столбца), ниже i > j, выше i < j.
  • для элементов, расположенных на побочной диагонали, справедливо i = N - j - 1 (I – индекс строки, j – индекс столбца), ниже i > N - j -1, выше i < N - j – 1 (индексы элементов начинаются с 0!).

Для обработки элементов, расположенных на диагоналях, достаточно одного цикла. Для обработки элементов над или под диагоналями потребуются вложенные циклы, причем можно либо заложить во внутреннем цикле условие проверки индексов по приведенным формулам, либо организовать циклы так, чтобы рассматривать только требуемые элементы.

Пример

Заполнить двухмерный массив N * N случайными целыми числами из диапазона
[-40,40]. Определить:

1. минимальное значение для элементов, расположенных на главной диагонали, и максимальное значение для элементов, расположенных на побочной диагонали;

2. произведение элементов, расположенных выше побочной диагонали;

3. среднее арифметическое элементов, расположенных ниже главной диагонали.

Окно формы приложения

Фрагмент программного кода

Пример.

Сформировать массив из N * N элементов. Зеркально отразить (повернуть) его относительно:

  1. главной диагонали;
  2. побочной диагонали.

Дополнительных массивов не создавать.

Важно! При решении задачи внешний и внутренний циклы организуются так, чтобы проход элементов осуществлялся только до нужной диагонали (до i-1 при повороте относительно главной диагонали и n-i-1 при повороте относительно побочной), иначе, смена произойдет дважды и все останется на своих местах.

Фрагменты кодов программы

Задание 4.
Выполните индивидуальное задание из предложенных задач третьего уровня.

Сохраните проект.


Home Page

Лабораторная работа №6: Работа со строками

назад вперед конец

вопросы

задания

Строки

Операции над строками

Типовые задачи на обработку строк. Анализ символьных строк

Типовые задачи на обработку строк. Изменение строк

Использование компонента Memo для ввода данных символьного типа, состоящих из нескольких строк

Задания первого уровня

Задания второго уровня

Задания третьего уровня

Контрольные вопросы и задания

назад вперед конец


question

Лабораторная работа №6: Контрольные вопросы и задания

конец

вопросы

задания

1. Как описываются переменные символьного типа?

2. Опишите стандартные функции для работы с символьными переменными.

3. Как описываются строковые переменные?

4. Как записывается строковая константа?

5. Какова максимальная длина строки?

6. Что общего между строкой и символьным массивом?

7. Какие операции применимы к строковым переменным и константам?

8. Опишите с примерами стандартные функции обработки строковых данных.

9. Опишите работу стандартных процедур обработки строковых данных.

10. Как можно обратиться к элементам строки?

11. Как в Memo можно обработать несколько строк?


Tasks

Лабораторная работа №6: Индивидуальные задания

конец

вопросы

задания

Задания первого уровня

№ вар.

Задание

1.

Дана строка, заканчивающаяся точкой. Подсчитать, сколько в ней слов.

2.

Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы b.

3.

Дана строка. Определить, сколько в ней символов «*», «;», «:».

4.

Дана строка символов, среди которых есть двоеточие (:). Определить, сколько символов ему предшествует.

5.

Дана строка. Преобразовать ее, удалив каждый символ «*».

6.

Дана строка. Определить, сколько раз входит в нее группа букв abc.

7.

Дана строка. Подсчитать количество букв k в последнем ее слове.

8.

Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок.

9.

В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен.

10.

В строке между словами вставить вместо пробела запятую и пробел.

11.

Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

12.

Определить, сколько раз в строке встречается заданное слово.

13.

Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке.

14.

Строка содержит произвольный русский текст. Проверить каких букв в нем больше: гласных или согласных.

15.

В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.

Задания второго уровня

№ вар.

Задание

1.

Дан текст, записанный заглавными русскими буквами. Получить тот же текст, записанный строчными буквами.

2.

Дан произвольный текст. Выяснить, чего в нем больше: русских букв или цифр.

3.

Дан текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.

4.

Дан текст на русском языке. Определить сколько раз встречается в нем самое длинное слово.

5.

Дан текст на русском языке. Выбрать из него только те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте.

6.

Дан текст на русском языке. Определить сколько раз встречается в нем самое короткое слово.

7.

Дан текст на русском языке и некоторая буква. Подсчитать, сколько слов начинается с указанной буквой.

8.

Дан текст. Сколько слов в тексте? Сколько цифр в тексте?

9.

Дан текст и некоторое слово. Вывести те предложения текста, которые содержат данное слово.

10.

Дан текст, в котором встречаются арифметические выражения вида a Å b, где Å - один из знаков +, -, *, /. Выписать все арифметические выражения и вычислить их значения.

11.

Дан текст на русском языке. Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву.

12.

Дан текст на русском языке и некоторая буква. Найти слово, содержащее наибольшее количество указанных букв.

13.

Дан произвольный текст. Проверить, правильно ли в нем расставлены круглые скобки.

14.

Дан текст на русском языке и некоторые два слова. Определить, сколько раз они входят в текст и сколько раз они входят непосредственно друг за другом.

15.

Дан зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заменяется на а). Получить новый текст, содержащий расшифровку данного текста.

Задания третьего уровня

Выполнить индивидуальное задание следующим образом:

  1. Текст ввести с помощью компонента Memo.
  2. Вывести слова исходного текста в алфавитном порядке.

№ вар.

Задание

1.

Дан зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заменяется на а). Получить новый текст, содержащий расшифровку данного текста.

2.

Дан текст на русском языке и некоторые два слова. Определить, сколько раз они входят в текст и сколько раз они входят непосредственно друг за другом.

3.

Дан произвольный текст. Проверить, правильно ли в нем расставлены круглые скобки.

4.

Дан текст на русском языке и некоторая буква. Найти слово, содержащее наибольшее количество указанных букв.

5.

Дан текст на русском языке. Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву.

6.

Дан текст, в котором встречаются арифметические выражения вида a Å b, где Å - один из знаков +, -, *, /. Выписать все арифметические выражения и вычислить их значения.

7.

Дан текст и некоторое слово. Вывести те предложения текста, которые содержат данное слово.

8.

Дан текст. Сколько слов в тексте? Сколько цифр в тексте?

9.

Дан текст на русском языке и некоторая буква. Подсчитать, сколько слов начинается с указанной буквой.

10.

Дан текст на русском языке. Определить сколько раз встречается в нем самое короткое слово.

11.

Дан текст на русском языке. Выбрать из него только те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте.

12.

Дан текст на русском языке. Определить сколько раз встречается в нем самое длинное слово.

13.

Дан текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.

14.

Дан произвольный текст. Выяснить, чего в нем больше: русских букв или цифр.

15.

Дан текст, записанный заглавными русскими буквами. Получить тот же текст, записанный строчными буквами.


tasks_1

Лабораторная работа №6: Задания первого уровня

конец

вопросы

задания

№ вар.

Задание

1.

Дана строка, заканчивающаяся точкой. Подсчитать, сколько в ней слов.

2.

Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы b.

3.

Дана строка. Определить, сколько в ней символов «*», «;», «:».

4.

Дана строка символов, среди которых есть двоеточие (:). Определить, сколько символов ему предшествует.

5.

Дана строка. Преобразовать ее, удалив каждый символ «*».

6.

Дана строка. Определить, сколько раз входит в нее группа букв abc.

7.

Дана строка. Подсчитать количество букв k в последнем ее слове.

8.

Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок.

9.

В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен.

10.

В строке между словами вставить вместо пробела запятую и пробел.

11.

Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

12.

Определить, сколько раз в строке встречается заданное слово.

13.

Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке.

14.

Строка содержит произвольный русский текст. Проверить каких букв в нем больше: гласных или согласных.

15.

В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.


tasks_2

Лабораторная работа №6: Задания второго уровня

конец

вопросы

задания

№ вар.

Задание

1.

Дан текст, записанный заглавными русскими буквами. Получить тот же текст, записанный строчными буквами.

2.

Дан произвольный текст. Выяснить, чего в нем больше: русских букв или цифр.

3.

Дан текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.

4.

Дан текст на русском языке. Определить сколько раз встречается в нем самое длинное слово.

5.

Дан текст на русском языке. Выбрать из него только те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте.

6.

Дан текст на русском языке. Определить сколько раз встречается в нем самое короткое слово.

7.

Дан текст на русском языке и некоторая буква. Подсчитать, сколько слов начинается с указанной буквой.

8.

Дан текст. Сколько слов в тексте? Сколько цифр в тексте?

9.

Дан текст и некоторое слово. Вывести те предложения текста, которые содержат данное слово.

10.

Дан текст, в котором встречаются арифметические выражения вида a Å b, где Å - один из знаков +, -, *, /. Выписать все арифметические выражения и вычислить их значения.

11.

Дан текст на русском языке. Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву.

12.

Дан текст на русском языке и некоторая буква. Найти слово, содержащее наибольшее количество указанных букв.

13.

Дан произвольный текст. Проверить, правильно ли в нем расставлены круглые скобки.

14.

Дан текст на русском языке и некоторые два слова. Определить, сколько раз они входят в текст и сколько раз они входят непосредственно друг за другом.

15.

Дан зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заменяется на а). Получить новый текст, содержащий расшифровку данного текста.


tasks_3

Лабораторная работа №6: Задания третьего уровня

конец

вопросы

задания

Выполнить индивидуальное задание следующим образом:

  1. Текст ввести с помощью компонента Memo.
  2. Вывести слова исходного текста в алфавитном порядке.

№ вар.

Задание

1.

Дан зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заменяется на а). Получить новый текст, содержащий расшифровку данного текста.

2.

Дан текст на русском языке и некоторые два слова. Определить, сколько раз они входят в текст и сколько раз они входят непосредственно друг за другом.

3.

Дан произвольный текст. Проверить, правильно ли в нем расставлены круглые скобки.

4.

Дан текст на русском языке и некоторая буква. Найти слово, содержащее наибольшее количество указанных букв.

5.

Дан текст на русском языке. Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву.

6.

Дан текст, в котором встречаются арифметические выражения вида a Å b, где Å - один из знаков +, -, *, /. Выписать все арифметические выражения и вычислить их значения.

7.

Дан текст и некоторое слово. Вывести те предложения текста, которые содержат данное слово.

8.

Дан текст. Сколько слов в тексте? Сколько цифр в тексте?

9.

Дан текст на русском языке и некоторая буква. Подсчитать, сколько слов начинается с указанной буквой.

10.

Дан текст на русском языке. Определить сколько раз встречается в нем самое короткое слово.

11.

Дан текст на русском языке. Выбрать из него только те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте.

12.

Дан текст на русском языке. Определить сколько раз встречается в нем самое длинное слово.

13.

Дан текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.

14.

Дан произвольный текст. Выяснить, чего в нем больше: русских букв или цифр.

15.

Дан текст, записанный заглавными русскими буквами. Получить тот же текст, записанный строчными буквами.


th1

Лабораторная работа №6: Строки

конец

вопросы

задания

В реальных задачах часто встречаются объекты символьного типа – строки. Строка в Pascal трактуется как последовательность символов. В состав строки могут входить буквы латинского алфавита, кириллица, цифры, всевозможные знаки, скобки, пробел и др. Каждый символ строковой величины занимает 1 байт памяти (десятичный код от 0 до 255, зафиксированный в кодовой таблице ASCII).

Фрагмент таблицы символьной кодировки ASCII

Количество символов в строке называется ее длиной. Длина строки может динамически изменяться от 0 до 255. Пустая строка имеет нулевую длину.

Строковая константа – последовательность символов, заключенных в апострофы. Например:

’Это строковая константа’, ’123’.

Таким образом, при использовании в выражениях строка обязательно заключается в кавычки.

Два следующих друг за другом апострофа (’’), обозначают пустую строку, т.е. строку с нулевой длиной.

Строковая переменная описывается в разделе описания переменных:

Var <имя> : string [<максимальная длина строки>]

Например:
Var
 Name: string[20];

 St: string;

Если максимальная длина не указана, то она принимается равной 255 (по умолчанию).

Элементы строки идентифицируются именем строки с индексом, заключенным в квадратные скобки. Т.е. к любому символу в строке можно обратиться точно также, как к элементу одномерного массива по его номеру.

Например: N[5], S[i], slovo[k+1]

Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.

Для хранения и обработки отдельных символов используют переменные типа char. Значением переменной такого типа может быть любой один символ.

Например: var a: char; ch: char;


th2

Лабораторная работа №6: Операции над строками

конец

вопросы

задания

Выражения, в которых операндами служат строковые данные, называются строковыми. Над строковыми данными допустимы операции сцепления и операции отношения.

Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и строковые переменные.

Например:

’Бейсик’ + ’Паскаль’ + ’Си’ + ’–’ + ’языки программирования высокого уровня’.
В результате получится строка:
’Бейсик Паскаль Си – языки программирования высокого уровня’.
Длина результирующей строки не должна превышать 255 символов.

Операции отношения =, <, >, <=, >=, <> позволяют произвести сравнения двух строк, в результате чего получается логическое значение (True или False). Операции отношения имеют более низкий приоритет, чем операции сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.

Например:

Выражение

Результат

’True1’ < ’True2’

True

’Student’ > ’STUDENT’

True

’Студент’ <> ’ Студент’

True

’Группа’ = ’Группа’

True

Все остальные действия над строками и символами реализуются с помощью встроенных процедур и функций.


th3

Лабораторная работа №6: Стандартные функции и процедуры для работы со строками

назад

Функции для работы с данными строкового типа

Обращение к функции

Действие

Пример

Copy (S, Poz, N)

Выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. Здесь N и Poz - целочисленные выражения.

S:=’IBM-PC’;
S1:=Copy(S,5,2);

Результат: S1=’PC’

Concat(S1,…,Sn)

Выполняет сцепление (конкатенацию) строк S1,S2,..,Sn в одну строку.

S1:=’Test’;
S2:=’-’;
S3:=’5’;
S:=Concat(S1,S2,S3);

Результат: S:=’Test-5’

Length(S)

Определяет текущую длину строки S. Результат – значение целого типа.

S:=’Test-5’;
n:=Length(S);

Результат: n=5

LowerCase(S)

Возвращает копию строки S, в которой все символы преобразованы в символы нижнего регистра (в строчные буквы). Работает только с буквами латинского алфавита.

S:= ’STUDENT’;
S:=LowerCase(S);

Результат:S=’student’

UpperCase(S)

Возвращает копию строки S, в которой все символы преобразованы в символы верхнего регистра (в прописные буквы). Работает только с буквами латинского алфавита.

S:= ’student’;
S:=UpperCase(S);

Результат:S=’STUDENT’

Trim(S)

Удаляет из строки S лидирующие и завершающие пробелы, а также управляющие символы.

S:='  Студент  ';
S:=Trim(S);

Результат: S='Студент'

TrimLeft(S)

Возвращает копию строки S с удаленными лидирующими пробелами и управляющими символами.

S:='  Студент  ';
S:=TrimLeft(S);

Результат:
S='Студент  '

TrimRight(S)

Возвращает копию строки S с удаленными завершающими пробелами и управляющими символами.

S:='  Студент  ';
S:=TrimRight(S);

Результат:
S='  Студент'

Chr(X)

Возвращает символ, указанный его ASCII-кодом. Здесь Х – значение целого типа. Результат – значение типа Char.

for i:=65 to 71 do
S:=S+Chr(i);

Результат: S=’ABCDEFG ’

Ord(S)

Возвращает ASCII-код указанного символа. Здесь S – переменная типа Char. Результат – значение целого типа.

S:='F';
Cod:=Ord(S);

Результат: Cod=70

Pos(S1, S2)

Обнаруживает первое появление в строке S2 подстроки S1. Результат – целое число, равное номеру позиции, где находится первый символ подстроки S1. Если такое появление не обнаружено, то результат равен 0.

S:=’abcdef’;
n:=Pos(’cd’,S);

Результат: n=3

Процедуры для работы с данными строкового типа

Обращение к процедуре

Действие

Пример

Delete(S, Poz, N);

Удаление N символов из строки S, начиная с позиции Poz.

S:=’abcdef’;
Delete(S,3,2);

Результат: S=’abef’

Insert(S1,S2,Poz);

Вставка строки S1 в строку S2, начиная с позиции Poz.

S:=’ЭВМ
        PC’;
Insert(’IBM-’,S,5);

Результат:
S=’ЭВМ IBM-PC’

Str(X[:N[:M]],S);

Преобразовывает числовое значение X в строку S. Параметр X является выражением целочисленного или действительного типа, а параметры N и M – это целочисленные выражения, определяющие форматирование строки S.

x:= -23.60;
Str(x:6:1,S);

Результат: S=’ -23.6’

a:=-23.60;
b:=20.5;
Str(a+b:6:1,S);

Результат: S=’  -3.1’

Val(S,x,Cod);

Преобразовывает строку S в числовое значение. Параметр S должен содержать последовательность символов, которая может быть воспринята как действительное число со знаком. Параметр x может быть как действительным, так и целочисленным. В параметр Cod заносится код выполнения преобразования: 0, если преобразование выполнено успешно, или номер позиции, в которой произошла ошибка.

S:='-23.60';
val(S,x,Cod);

Результат: x=-23,6


th4

Лабораторная работа №6: Типовые задачи на обработку строк

конец

вопросы

задания

Анализ символьных строк

Пример.

Ввести строку символов. Определить

1. Сколько цифр в строке.

2. Есть ли в заданной строке одинаковые символы.

3. Составить перечень всех гласных латинских букв.

Программный код


th5

Лабораторная работа №6: Типовые задачи на обработку строк

конец

вопросы

задания

Изменение строк (замена, удаление, вставка символов, лексем)

Пример

Заменить во введенной строке строчные русские буквы на прописные.

Программный код

Пример

Ввести текст в виде строки, состоящей из слов, разделенных пробелами (одним или более). Преобразовать строку так, чтобы между словами был только один пробел. Вывести сообщение о количестве удаленных пробелов.

Фрагмент кода программы

Пример.

Дана строка длиной до 254 символов. Удалить все знаки «+» перед символами, не являющимися цифрами.

Фрагмент программного кода

Пример.

В заданной строке заменить все слова «всегда» на «часто».

Фрагмент программного кода

Пример.

Дана строка, содержащая слова, разделенные пробелами. Преобразовать строку в массив слов (лексем).

Фрагмент программного кода

Задание 1.
Выполните индивидуальное задание из предложенных задач первого уровня.

Сохраните проект.


th6

Лабораторная работа №6: Использование компонента Memo для ввода данных символьного типа, состоящих из нескольких строк

начало

назад

вперед

конец

вопросы

задания

Пример.

Ввести с помощью компонента Memo текст из русских букв, состоящий из нескольких строк. Сосчитать сколько в этом тексте букв ’а’.

Окно формы проекта | Программный код

Задание 2.
Выполните индивидуальное задание из предложенных задач второго уровня.

Сохраните проект.

Задание 3.
Выполните индивидуальное задание из предложенных задач третьего уровня.

Сохраните проект.


Home Page

Лабораторная работа №7: Работа с файлами

конец

вопросы

задания

Файлы

Открытие текстового файла

Процедуры для обработки текстовых файлов

Функции для работы с файлами

Примеры работы с файлами

Работа со стандартными диалоговыми панелями Windows - компоненты группы Dialogs

Задания первого уровня

Задания второго уровня

Задания третьего уровня

Контрольные вопросы и задания


question

Лабораторная работа №7: Контрольные вопросы и задания

конец

вопросы

задания

1. Как объявить файловую переменную?

2. Как файловую переменную связать с физическим файлом?

3. Опишите назначение процедур и функций файлового ввода-вывода: Append, AssignFile, CloseFile, Eof, IOResult, Read, Reset, Rewrite, Seek, Write.

4. Каково назначение директивы компилятора {$I-}?

5. Опишите назначение компонентов OpenDialog, SaveDialog, FontDialog страницы Dialogs палитры компонентов. Каковы особенности их размещения на форме приложения?

6. Каково назначение свойства OpenDialog1.Filter? Какими способами можно изменять значение этого свойства?

7. Какой метод используется для вызова диалоговой панели?

8. В каком свойстве находится имя файла?

9. Описать разницу между текстовыми, типизированными и нетипизированными файлами.


tasks

Лабораторная работа №7: Индивидуальные задания

конец

вопросы

задания

Задания первого уровня

При выполнении индивидуального задания необходимо текст считать из текстового файла. Результат выполнения программы записать в исходный файл.

№ вар.

Задание

1.

В тексте имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.

2.

Дан произвольный русский текст. Проверить каких букв в нем больше: гласных или согласных.

3.

Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данном тексте.

4.

Определить, сколько раз в тексте встречается заданное слово.

5.

Удалить часть текста, заключенного в скобки (вместе со скобками).

6.

В тексте между словами вставить вместо пробела запятую и пробел.

7.

В тексте заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен.

8.

Дан текст, в котором есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок.

9.

Дан текст. Подсчитать количество букв k в последнем ее слове.

10.

Дан текст. Определить, сколько раз входит в него группа букв abc.

11.

Дан текст. Преобразовать его, удалив каждый символ «*».

12.

Дан текст, среди символов которого есть двоеточие (:). Определить, сколько символов ему предшествует.

13.

Дан текст. Определить, сколько в нем символов «*», «;», «:».

14.

Дан текст, содержащий английский текст. Найти количество слов, начинающихся с буквы b.

15.

Дан текст, заканчивающийся точкой. Подсчитать, сколько в нем слов.

Задания второго уровня

При выполнении индивидуального задания необходимо размерности массива и сам массив считать из файла.

№ вар.

Задание

1.

Дан двумерный массив размером n*m.

1. Заменить четный элемент каждой строки нулем

2. Вставить после всех строк, содержащих минимальный элемент массива, строку 2, 4, 6,…

3. Удалить все столбцы, в которых встретится элемент по модулю больший левого верхнего (a1,1).

4. Поменять местами третий и последний столбцы.

2.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждой строки номером столбца, в которой он находится.

2. Вставить после всех столбцов, содержащих нулевой элемент, первый столбец .

3. Удалить все строки, в которых встретится четный отрицательный элемент.

4. Поменять местами первый и предпоследний столбцы.

3.

Дан двумерный массив размером n*m.

1. Заменить нечетный элемент каждой строки нулем

2. Вставить после всех строк, содержащих минимальное значение строку 1,2,3,….

3. Удалить все столбцы, в которых первый элемент четный

4. Поменять местами первый и последний столбцы.

4.

Дан двумерный массив размером n*m.

5. Заменить четный элемент каждого столбца максимальным по модулю

6. Вставить после столбцов, содержащих минимальное значение второй столбец.

7. Удалить все строки, в которых второй элемент больше предпоследнего

8. Поменять местами первый и средний столбцы.

5.

Дан двумерный массив размером n*m.

1. Заменить элемент кратный трем каждого столбца нулем

2. Вставить после каждого столбца, начиная со второго первый столбец.

3. Удалить из него каждый столбец, содержащий элемент, кратный пяти

4. Поменять местами третий и последний столбцы.

6.

Дан двумерный массив размером n*m.

1. Заменить отрицательный элемент каждого столбца нулем

2. Вставить после каждого столбца, содержащего максимальный по модулю элемент, строку из нулей.

3. Удалить из него каждую строку, содержащую элемент, кратный трем

4. Поменять местами первый и последний столбцы.

7.

Дан двумерный массив размером n*m.

1. Заменить нулевой элемент каждого столбца максимальным по модулю элементом массива

2. Вставить после каждой строки, содержащей максимальный по модулю элемент, последнюю строку.

3. Удалить из него каждую строку, содержащую нулевой элемент

4. Поменять местами два средних столбца.

8.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждого столбца нулем

2. Вставить после всех строк, содержащих максимальный по модулю элемент, первую строку.

3. Удалить из него строку и столбец, на перекрестье которых находится максимальный по модулю элемент..

4. Поменять местами последний и предпоследний столбцы.

9.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждой строки нулем

2. Вставить после каждого столбца, содержащего максимальный элемент массива, столбец из нулей.

3. Удалить все столбцы, в которых встретится нечетный положительный элемент.

4. Поменять местами первый и предпоследний столбцы.

10.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждой строки нулем

2. Вставить перед всеми строками, первый элемент которых делится на 3, строку из нулей.

3. Удалить самый левый столбец, в котором встретиться четный отрицательный элемент.

4. Поменять местами второй и предпоследний столбцы.

11.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждой строки на противоположный по знаку

2. Вставить после всех столбцов, содержащих максимальный элемент столбец из нулей.

3. Удалить все столбцы, в которых есть отрицательный элемент

4. Поменять местами первый и последний столбцы.

12.

Дан двумерный массив размером n*m.

1. Заменить минимальный по модулю элемент каждого столбца на противоположный

2. Вставить после каждого столбца, содержащего значение равное нулю столбец из нулей.

3. Удалить все строки, содержащие максимальные элементы

4. Поменять местами первый и последний столбцы

13.

Дан двумерный массив размером n*m.

1. Заменить все элементы первых трех столбцов на их квадраты.

2. Вставить после каждой нечетной строки первую строку.

3. Удалить все столбцы, в которых первый элемент больше последнего,

4. Поменять местами средние строки с первой и последней

14.

Дан двумерный массив размером n*m.

1. Заменить минимальный по модулю элемент каждого столбца нулем

2. Вставить после каждой строки, содержащей минимальное значение строку из нулей.

3. Удалить все столбцы, в которых первый элемент больше последнего

4. Поменять местами первый и последний столбцы.

15.

Дан двумерный массив размером n*m.

1. Заменить максимальный по модулю элемент каждой строки на противоположный по знаку.

2. Вставить после каждой четной строки первую строку.

3. Удалить все строки, содержащие ноль

4. Поменять местами средние столбцы

Задания третьего уровня

В проект, выполненный по индивидуальному заданию второго уровня, добавить вывод результатов программы в исходный текстовый файл с комментариями.


tasks_1

Лабораторная работа №7: Задания первого уровня

конец

вопросы

задания

При выполнении индивидуального задания необходимо текст считать из текстового файла. Результат выполнения программы записать в исходный файл.

№ вар.

Задание

1.

В тексте имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.

2.

Дан произвольный русский текст. Проверить каких букв в нем больше: гласных или согласных.

3.

Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данном тексте.

4.

Определить, сколько раз в тексте встречается заданное слово.

5.

Удалить часть текста, заключенного в скобки (вместе со скобками).

6.

В тексте между словами вставить вместо пробела запятую и пробел.

7.

В тексте заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен.

8.

Дан текст, в котором есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок.

9.

Дан текст. Подсчитать количество букв k в последнем ее слове.

10.

Дан текст. Определить, сколько раз входит в него группа букв abc.

11.

Дан текст. Преобразовать его, удалив каждый символ «*».

12.

Дан текст, среди символов которого есть двоеточие (:). Определить, сколько символов ему предшествует.

13.

Дан текст. Определить, сколько в нем символов «*», «;», «:».

14.

Дан текст, содержащий английский текст. Найти количество слов, начинающихся с буквы b.

15.

Дан текст, заканчивающийся точкой. Подсчитать, сколько в нем слов.


tasks_2

Лабораторная работа №7: Задания второго уровня

конец

вопросы

задания

При выполнении индивидуального задания необходимо размерности массива и сам массив считать из файла.

№ вар.

Задание

1.

Дан двумерный массив размером n*m.

1. Заменить четный элемент каждой строки нулем

2. Вставить после всех строк, содержащих минимальный элемент массива, строку 2, 4, 6,…

3. Удалить все столбцы, в которых встретится элемент по модулю больший левого верхнего (a1,1).

4. Поменять местами третий и последний столбцы.

2.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждой строки номером столбца, в которой он находится.

2. Вставить после всех столбцов, содержащих нулевой элемент, первый столбец .

3. Удалить все строки, в которых встретится четный отрицательный элемент.

4. Поменять местами первый и предпоследний столбцы.

3.

Дан двумерный массив размером n*m.

1. Заменить нечетный элемент каждой строки нулем

2. Вставить после всех строк, содержащих минимальное значение строку 1,2,3,….

3. Удалить все столбцы, в которых первый элемент четный

4. Поменять местами первый и последний столбцы.

4.

Дан двумерный массив размером n*m.

5. Заменить четный элемент каждого столбца максимальным по модулю

6. Вставить после столбцов, содержащих минимальное значение второй столбец.

7. Удалить все строки, в которых второй элемент больше предпоследнего

8. Поменять местами первый и средний столбцы.

5.

Дан двумерный массив размером n*m.

1. Заменить элемент кратный трем каждого столбца нулем

2. Вставить после каждого столбца, начиная со второго первый столбец.

3. Удалить из него каждый столбец, содержащий элемент, кратный пяти

4. Поменять местами третий и последний столбцы.

6.

Дан двумерный массив размером n*m.

1. Заменить отрицательный элемент каждого столбца нулем

2. Вставить после каждого столбца, содержащего максимальный по модулю элемент, строку из нулей.

3. Удалить из него каждую строку, содержащую элемент, кратный трем

4. Поменять местами первый и последний столбцы.

7.

Дан двумерный массив размером n*m.

1. Заменить нулевой элемент каждого столбца максимальным по модулю элементом массива

2. Вставить после каждой строки, содержащей максимальный по модулю элемент, последнюю строку.

3. Удалить из него каждую строку, содержащую нулевой элемент

4. Поменять местами два средних столбца.

8.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждого столбца нулем

2. Вставить после всех строк, содержащих максимальный по модулю элемент, первую строку.

3. Удалить из него строку и столбец, на перекрестье которых находится максимальный по модулю элемент..

4. Поменять местами последний и предпоследний столбцы.

9.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждой строки нулем

2. Вставить после каждого столбца, содержащего максимальный элемент массива, столбец из нулей.

3. Удалить все столбцы, в которых встретится нечетный положительный элемент.

4. Поменять местами первый и предпоследний столбцы.

10.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждой строки нулем

2. Вставить перед всеми строками, первый элемент которых делится на 3, строку из нулей.

3. Удалить самый левый столбец, в котором встретиться четный отрицательный элемент.

4. Поменять местами второй и предпоследний столбцы.

11.

Дан двумерный массив размером n*m.

1. Заменить максимальный элемент каждой строки на противоположный по знаку

2. Вставить после всех столбцов, содержащих максимальный элемент столбец из нулей.

3. Удалить все столбцы, в которых есть отрицательный элемент

4. Поменять местами первый и последний столбцы.

12.

Дан двумерный массив размером n*m.

1. Заменить минимальный по модулю элемент каждого столбца на противоположный

2. Вставить после каждого столбца, содержащего значение равное нулю столбец из нулей.

3. Удалить все строки, содержащие максимальные элементы

4. Поменять местами первый и последний столбцы

13.

Дан двумерный массив размером n*m.

1. Заменить все элементы первых трех столбцов на их квадраты.

2. Вставить после каждой нечетной строки первую строку.

3. Удалить все столбцы, в которых первый элемент больше последнего,

4. Поменять местами средние строки с первой и последней

14.

Дан двумерный массив размером n*m.

1. Заменить минимальный по модулю элемент каждого столбца нулем

2. Вставить после каждой строки, содержащей минимальное значение строку из нулей.

3. Удалить все столбцы, в которых первый элемент больше последнего

4. Поменять местами первый и последний столбцы.

15.

Дан двумерный массив размером n*m.

1. Заменить максимальный по модулю элемент каждой строки на противоположный по знаку.

2. Вставить после каждой четной строки первую строку.

3. Удалить все строки, содержащие ноль

4. Поменять местами средние столбцы


tasks_3

Лабораторная работа №7: Задания третьего уровня

конец

вопросы

задания

В проект, выполненный по индивидуальному заданию второго уровня, добавить вывод результатов программы в исходный текстовый файл с комментариями.


th1

Лабораторная работа №7: Файлы

конец

вопросы

задания

Чтобы сохранять входные данные и результаты неограниченно долго и иметь возможность воспользоваться ими в любой момент используют файлы на магнитных носителях информации.

По способу доступа к информации, записанной в файл, различают файлы прямого и последовательного доступа.

Файлом последовательного доступа называется файл, к элементам которого обеспечивается доступ в такой же последовательности, в какой они записывались. Как правило – это текстовые файлы.

Файлом прямого доступа называется файл, доступ к элементам которого осуществляется по адресу элемента. Как правило – это файлы баз данных.

Turbo Pascal поддерживает три типа файлов:

- текстовые,

- типизированные

- нетипизированные.

К типизированным файлам относятся файлы строго определенного типа. Чаще всего это файлы, состоящие из записей. Они применяются для создания различных баз данных. Содержимое такого файла рассматривается как последовательность записей определенной структуры. Это файлы прямого доступа. Единицей измерения такого набора данных является сама запись.

Нетипизированные файлы не имеют строго определенного типа, их можно рассматривать как совокупность символов или байтов. Внутренняя реализация поддержки таких файлов наиболее близка к аппаратной поддержке работы с внешними носителями. За счет этого достигается максимальная скорость доступа к наборам данных. При работе с такими файлами не тратится время на преобразование типов и поиск управляющих последовательностей, достаточно считать содержимое файла в определенную область памяти. Это файлы прямого доступа, самым важным параметром служит длина записи в байтах.

Текстовые файлы

Текстовый файл можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов. Это файлы последовательного доступа. Структурной единицей текстовых файлов является строка. Данные в таких файлах хранятся в виде цепочки ASCII кодов и могут обрабатываться любым текстовым редактором. Каждая строка завершается маркером конца строки. На практике такой маркер представляет собой последовательность из двух символов: перевод строки chr(10) и возврат каретки chr(13). Эти два символа задают стандартные действия по управлению текстовыми файлами.

Текстовые файлы описывается в разделе описания переменных:

Var
  <файловая переменная>: TextFile;

Файловая переменная - это имя переменной, которое используется в программном коде для работы с файлом.


th3

Лабораторная работа №7: Процедуры для обработки текстовых файлов

начало

назад

вперед

конец

вопросы

задания

У текстовых файлов есть своя специфика. Специальные расширения стандартных процедур чтения (Read) и записи (Write), описанных ниже, разрешают работать со значениями несимвольного типа. Другими словами, последовательность символов автоматически преобразуется к значению того типа переменной, которая используется в файловых операциях.

Вызов Read(F,Ww), где Ww - переменная типа word, осуществляет чтение из файла F последовательности цифр, которая затем интерпретируется в число, значение которого и будет присвоено переменной Ww. В случае, если вместо последовательности цифр идет любая другая последовательность символов, использование такого оператора приводит к ошибке выполнения программы.

В таблице F – имя файловой переменной.

V1,V2,…,Vn – переменные разных типов

Обращение к процедуре

Действие

Read (F,V1[,V2,…,Vn]);

Считывает из дискового файла строки символов в переменные V1, V2,…,Vn.

Readln (F,V1[,V2,…,Vn]);

Выполняет те же действия, что и Read, и дополнительно – чтение до маркера конца строки и переход к новой строке
Readln(F) без списка переменных позволяет пропустить строку в файле и перейти на новую строку.

Write (F,V1[,V2,…,Vn]);

Записывает значения переменных V1,V2,…,Vn в файл на диске.

Writeln (F,V1[,V2,…,Vn]);

Выполняет те же действия, что и Write, но обеспечивает запись всех величин с обязательной установкой маркера конца строки в файл.
Writeln(F) без списка переменных. записывает в файл пустую строку.

Закрытие файла

После работы с файлом его нужно обязательно закрыть, иначе информация в файле может быть потеряна. Это делается с помощью процедуры CloseFile(F).


th_2

Лабораторная работа №7: Открытие текстового файла

конец

вопросы

задания

Перед тем, как записать данные в файл или прочитать данные из файла, необходимо сначала открыть этот файл. Открытие текстового файла на запись, чтение или дозапись осуществляется с помощью разных процедур. Но прежде, чем их использовать, необходимо во всех случаях присвоить файлу на магнитном носителе имя, т.е. установить соответствие между файловой переменной в программе и именем файла на диске. Это делается с помощью процедуры AssignFile:

AssignFile(<файловая переменная>,<имя файла>),

Здесь имя файла - любое выражение строкового типа, которое строится по правилам определения имен в операционной системе.

Например:

AssignFile(F,’c:\Student\Primer.Txt’);

Процедуры для открытия текстовых файлов

В таблице F – имя файловой переменной.

Обращение к процедуре

Действие

Rewrite (F)

Открывает (создает) новый файл. Имя файла предварительно определяется в процедуре AssignFile. Если на диске уже был файл с таким именем, то он уничтожается.

Reset (F)

Открывает уже существующий файл. Файл считывается последовательно. Если эта процедура применена к несуществующему файлу, то возникает ошибка ввода-вывода.

Append (F)

Открывает уже существующий файл для дозаписи. Запись производится в конец файла.


th_4

Лабораторная работа №7: Функции для работы с файлами

конец

вопросы

задания

Функция

Действие

Eoln(F)

Возвращает булевское значение True, если текущая файловая позиция находится на маркере конца строки или вызов Eof(F) вернул значение True. Во всех остальных случаях значение функции будет False.

Eof(F)

Возвращает булевское значение True, если указатель конца файла находится сразу за последним компонентом, и False – в противном случае.

SeekEoln(F)

Возвращает булевское значение True, при достижении маркера конца строки, причем указатель файла пропускает все пробелы и знаки табуляции, предшествующие маркеру. В противном случае возвращает значение False.

SeekEof(F)

Возвращает булевское значение True, если указатель файла находится на маркере конца файла. Эта функция также пропускает все пробелы и знаки табуляции, предшествующие маркеру, и выполняет автоматический пропуск маркера конца строки.


th_5

Лабораторная работа №7: Примеры работы с файлами

конец

вопросы

задания

Пример.

Записать в файл текст, введенный в окне Edit.

Окно формы проекта

Полученный файл, открытый в блокноте

Программный код

Пример.

Открыть текстовый файл для чтения, считать из него текст в окно Memo. Перед открытием файла проверить его наличие; в случае отсутствия выдать сообщение

Фрагмент кода программы

Пример.

Открыть текстовый файл для дополнения, добавить в него текст из окна Edit.

Фрагмент кода программы

Пример.

Стихотворный текст (в строке не более 80 символов) записать «лесенкой» (по одному слову в строке).

Окно формы проекта | Программный код

Задание 1 .
Выполните индивидуальное задание из предложенных задач первого уровня.

Сохраните проект.


th_6

Лабораторная работа №7: Краткая характеристика компонентов группы Dialogs

начало

назад

вперед

конец

вопросы

задания

В состав среды Delphi входят десять компонентов группы Dialogs, реализующих работу со стандартными диалоговыми панелями Windows. Эти компоненты облегчают разработку стандартных фрагментов приложения, таких как выбор нужного файла, цвета, шрифта, работу с принтером. Для определения, какая из кнопок диалоговой панели была нажата, используется метод Execute. Если нажата кнопка «ОК», то он возвращает значение True, если кнопка «Отмена», то значение False.

Компонент OpenDialog [image] позволяет выбрать файл для открытия из стандартного диалогового окна Windows.

Свойства компонента OpenDialog

DefaultExt | Создает расширение файла автоматически.
Filter | Позволяет задать шаблон имен открываемых файлов в окне редактора фильтров. Можно одновременно определить несколько фильтров.
InitialDir | В этом свойстве хранится название рабочего каталога.
FileName | В этом свойстве хранится название выбранного файла.
Options → | В этом свойстве находится ряд опций открываемой панели – свойств типа Boolean. Опция включена, если ее значение True, и отключена, если - False.
 | OfAllowMultiSelect | Позволяет выбрать несколько файлов одновременно
 | ofCreatePromt | Выдает запрос на создание файла, если его нет
 | ofFileMustExist | Позволяет выбирать только существующие файлы
 | ofNoChangeDir | Запрещает изменение каталога
 | ofOwerwritePromt | Запрашивает подтверждение на сохранение существующего файла
 | ofReadOnly | Помечает флажок Read Only (только для чтения)
 | ofNoReadOnlyReturn | Запрещает выбор файла только для чтения.
Title | Задает текст заголовка панели.

Пример использования в программе

Компонент SaveDialog [image] позволяет выбрать файл для сохранения из стандартного диалогового окна Windows. По внешнему виду и порядку работы практически аналогичен компоненту OpenDialog.Различаются только надписи и некоторые свойства.

Компонент FontDialog [image] позволяет вызвать стандартную диалоговую панель выбора шрифтов и их характеристик.

Свойства компонента FontDialog

Font | Определяет, какой шрифт был выбран для последующей работы.
Device | Выбор списка, используемых шрифтов: только для принтера, только для дисплея или для того и другого устройства.
Options | Задает опции диалоговой панели
 | FdAnsiOnly | Работа только со шрифтами, поддерживаемыми Windows
 | fdEffects | Использование для шрифтов эффектов и цветов
 | fdFixedPitchOnly | Работа только с непропорциональными шрифтами
 | fdForceFontExist | Выдает сообщение при выборе несуществующего шрифта
 | fdTrueTypeOnly | Работа только со шрифтами TrueType
 | fdLimitSize - | Ограничивает размер выбираемого шрифта

Пример использования в программе

Компонент ColorDialog [image] позволяет вызвать стандартную диалоговую панель настройки цветов.

Свойства компонента ColorDialog

Color | Сохраняет выбранный цвет
Options | Свойство состоит из следующих опций:
 | CdFullOpen | Выполнить полный показ диалога
 | cdPreventFullOpen | Запретить полный показ диалога

Пример использования в программе

Компонент FindDialog [image] позволяет вызвать стандартную диалоговую панель поиска текста. Позволяет ввести текст для поиска. Сам поиск программируется самостоятельно.

Свойства компонента FindDialog

FindText | Хранит текст для последующего поиска.
Options | В этом свойстве заданы опции панели. Эти опции на включение в панель дополнительных сервисных кнопок.

Компонент ReplaseDialog [image] позволяет вызвать стандартную диалоговую панель поиска и замены текста. Позволяет ввести текст для поиска. Сам поиск программируется самостоятельно.

Свойства компонента ReplaseDialog

FindText | Хранит текст для поиска.
ReplaceText | Хранит текст для замены.

Пример.

Ввести двумерную матрицу из файла. Для открытия нужного файла использовать компонент OpenDialog.

Программный код

Задание 2 .
Выполните индивидуальное задание из предложенных задач второго уровня.

Сохраните проект.

Задание 3 .
Выполните индивидуальное задание из предложенных задач третьего уровня.

Сохраните проект.